zoukankan      html  css  js  c++  java
  • mysql导出文本文件,加分隔符

    从mysql导出,再导入到oracle

    #!/bin/sh
    
    cd /u03/tools/machine_info
    rm -f data/machine_info.txt
    
    mysql -u用户名 -p密码 -h服务器IP -P端口 < select_machine_info.sql|awk -F"	" ' {printf("%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s
    ", $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19)}' >  data/machine_info.txt
    
    sqlldr userid=用户名/密码@oracledb control=machine_info.ctl data=machine_info.txt parallel=true direct=true

    ctl文件模板

    options(skip=1)
    unrecoverable
    load data
    characterset utf8
    append into table COLLECTION_LOG_tmp
    FIELDS TERMINATED BY "," 
    TRAILING NULLCOLS
    (
      tdbank_imp_date     ,
      worldid             ,
      ip                  ,
      tablenames          ,
      gamesvrid           ,
      dteventtime         date "yyyy-mm-dd hh24:mi:ss",
      vgameappid          ,
      platid              ,
      izoneareaid         ,
      vopenid             ,
      stageid            ,
      stagetype           ,
      stageindexid        ,
      doodadid            ,
      x                   ,
      y                   ,
      z                   ,
      opendoodadresult    ,
      mindeyestate        ,
      toplevel            ,
      originalplayerlevel 
    )
    mysql> select * into outfile 'D:/temp/20150410.txt' FIELDS TERMINATED BY ',
    ' from `2015-04-10`;

     把命令存成sql,在shell里面执行 

    mysql -uroot -ppassword < update.sql  

    a.sql

    select DATE_SUB(sysdate(), INTERVAL 1 DAY), * into outfile 'dataplayerequip.log' FIELDS TERMINATED BY ';' from `equip` limit 1;

    a.sh

    cd  /data/player
    rm -rf *
    mysql -uroot -ppassword < a.sql  
    MYDATE=$(date +%Y%m%d)
    mv equip.log equip-1-$MYDATE.log

    SELECT INTO…OUTFILE语法:

    select * from Table into outfile '/路径/文件名'
    fields terminated by ','
    enclosed by '"'
    lines terminated by ' '

    (1)路径目录必须有读写权限777
    (2)文件名必须唯一
    (3)fields terminated by ','必须存在,否则打开的文件的列在同一的单元格中出现
    (4)我验证的表结构为gbk的,否则出现乱码

    ●  fields子句:在FIELDS子句中有三个亚子句:TERMINATED BY、 [OPTIONALLY] ENCLOSED BY和ESCAPED BY。如果指定了FIELDS子句,则这三个亚子句中至少要指定一个。

    (1)TERMINATED BY用来指定字段值之间的符号,例如,“TERMINATED BY ','”指定了逗号作为两个字段值之间的标志。

    (2)ENCLOSED BY子句用来指定包裹文件中字符值的符号,例如,“ENCLOSED BY ' " '”表示文件中字符值放在双引号之间,若加上关键字OPTIONALLY表示所有的值都放在双引号之间。

    (3)ESCAPED BY子句用来指定转义字符,例如,“ESCAPED BY '*'”将“*”指定为转义字符,取代“”,如空格将表示为“*N”。

    (4) LINES子句:在LINES子句中使用TERMINATED BY指定一行结束的标志,如“LINES TERMINATED BY '?'”表示一行以“?”作为结束标志。

    导出mysql,并执行rsync

    #
    time=`date +%Y%m%d`
    mysql -uroot -p'密码' -e "show databases;" >/tmp/database.txt
    db=`cat /tmp/database.txt |grep _ws|awk -F'[ws_]+' '{print $2}'`
    bak_path=/data/player_rsync/
    for i in ${db[@]}
    do
    mkdir /data/player_rsync/$time/
    chmod 777 /data/player_rsync/$time/
    #mysqldump -uroot -p'密码' _ws${i}_branch  player_query_data > /data/player_rsync/$time/tw${i}.txt
    mysqldump --tab='/data/player_rsync/'$time'/' --fields-terminated-by='|' -h 127.0.0.1 -u root -p'密码' _ws${i}_branch player_query_data 
    mv /data/player_rsync/$time/player_query_data.txt   /data/player_rsync/$time/game_tw${i}.txt
    sed -i 's/^/playerquerydata|100'$i'|&/g' /data/player_rsync/$time/game_tw${i}.txt
    done
    sleep 20
    
    sed -i "s/\\|/&/g"  /data/player_rsync/$time/*.txt
    rm -r /data/player_rsync/$time/player_query_data.sql
    
    rsync -vzrtp --progress --password-file=/etc/rsync.passwd /data/player_rsync/ qysql@127.0.0.1::qy_sql
    
    
    num=`ls /data/player_rsync/|wc -l`
    
    
    if [[ $num > 5 ]];then
    file=`ls /data/player_rsync/|grep $time`
    for a in ${file[@]}
    do
    cd $bak_path
    rm -rf $a
    done
    fi
    
    exit
  • 相关阅读:
    171. Excel Sheet Column Number (Easy)
    349. Intersection of Two Arrays (Easy)
    453. Minimum Moves to Equal Array Elements (Easy)
    657. Judge Route Circle (Easy)
    CSS笔记
    保存页面状态
    UI开发总结
    ubuntu 下配置munin
    反向代理配置
    JavaScript 高级程序设计第二版
  • 原文地址:https://www.cnblogs.com/linn/p/4424253.html
Copyright © 2011-2022 走看看