zoukankan      html  css  js  c++  java
  • 服务器之间通过sftp的方式同步文件,并入库到本地数据的表中

    需求:A服务器会定时生成一个CSV文件,B服务器从A服务器下载下来,并存入到B服务器的oracle数据库的某表中。

    分析:1.数据同步上传和下载可以使用ftp的方式,当然也有其他方式。

    2.数据存到本地后可以使用oracle自带的sqloader来加载文件到数据库中。

    也可以选择dblink,网上说效率没这个高。未亲测。

    实施:

    1.写一个sqlloader的控制文件,取名为res_count.ctl

    OPTIONS (skip=1,rows=128)
    load data
    infile '/wjjk_oracle/export_files/fm_to_datang_files/res_count.txt'   --本来这里是res_count.csv文件,但是不知道是不是对方提供的csv编码有问题,导进去为空,就转成了制表符的txt。网上说该有asc||码。
    truncate
    INTO TABLE res_count
    fields terminated by X'09' --X'09'表示制表符,这样也行'  '
    trailing nullcols ( emsname, devicename, kind, num )

    关于sqlloader的更多知识请浏览:http://blog.csdn.net/ytfy12/article/details/53043814

    2.写一个shell脚本,取名为:res_count.sh.做数据同步,并执行sqlloder的控制文件。

    #!/bin/sh
    export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1/
    export LANG=en_US.utf8
    HOST=11.11.11.11
    USER=net
    PASS=OSUsernet_
    cd /wjjk_oracle/export_files/fm_to_datang_files
    echo "Starting to sftp..."
    #nohup  sqlplus rmssc/rms4sc @/wjjk_oracle/export_script/fm_to_datang/res_count_delete.sql
    curdate="`date +%Y%m%d`"
    filename="$curdate"".csv"
    lftp -u ${USER},${PASS} sftp://${HOST} <<EOF
    cd /backup/statistics
    mget $filename
    bye
    EOF
    mv ${filename} res_count.csv
    echo 'start sqlldr'
    /u01/app/oracle/product/11.2.0/db_1/bin/sqlldr user/password@rms_51 control='/wjjk_oracle/export_script/fm_to_datang/res_count.ctl'mv res_count.csv ${filename}

    这里大概逻辑就是设置oracle的目录,编码,设置几个变量为你要连接的服务器的账号、密码、地址。

    对方规定每天会生产20180321.csv这种格式的文件。我们去取回来。最后执行sqlldr进行入库操作。

    3.最后创建一个定时任务,crontab这个命令,可以网上自己查用法。

    00 22 * * * /wjjk_oracle/export_script/fm_to_datang/res_count.sh >> /wjjk_oracle/export_script/fm_to_datang/res_count.log 2>&1 &

    没记错的话,每天0点22就会定时执行了。

  • 相关阅读:
    java中的“指针”
    UEditor1.4.3.3编辑器漏洞
    csrf攻击实例
    shiro java 反序列漏洞复现
    渗透面试问题
    了解 OWASP TOP 10
    网络基础知识回顾
    cs(cobalt strike)的使用
    解决docker-valhub漏洞环境下载慢的问题
    Vulhub漏洞CVE-2017-10271复现
  • 原文地址:https://www.cnblogs.com/wenlin66/p/8615719.html
Copyright © 2011-2022 走看看