bcp和load table

使用BCP和LOAD TABLE联合完成Sybase IQ 的数据导出和导入工作。
说明:
  表(视图)GN_TEST只有两个字段,TIMEID和MSISDN,
  导出时我用'|'作为字段分隔符,'&&&&'作为行分隔符。


1.导出

使用Sybase IQ自带的备份工具bcp导出文件:

  bcp [datamark.eastcom.gn_test] out [/srcdata/bcp_export/gn.txt] -c -t"|" -r"&&&&" [-Ueastcom -PEastCom\!\$ -Sdatamark]

注意:[]号是我加上的,实际使用时要去掉,比如:

  bcp datamark.eastcom.gn_test out gn.txt -c -t"|" -r"&&&&" -Ueastcom -PEastCom\!\$ -Sdatamark

[datamark.eastcom.gn_test]
  以.划分为3部分,分别是数据库实例名(datamark)、用户名(eastcom)、和用户下的表名(gn_test,也可以是视图名称)
out
  必要参数,该动作指定bcp为导出状态。对应的还有in,表示导入。
[/srcdata/bcp_export/gn.txt]
  指定导出的文件,表内导出的数据将放在该文件内。
-c -t"|" -r"&&&&"
  -t指定字段分隔符为|,-r指定列分隔符为&&&&
[-Ueastcom -PEastCom\!\$ -Sdatamark]
  -U指定用户
  -P输入密码
  -S指定数据库

鉴于bcp导入我没研究明白,所以还是建议使用LOAD TABLE作为导入部分。

 

2.导入
使用LOAD TABLE导入时请参照以下形式

  LOAD TABLE GN_TEST
  (
  TIMEID ,
  MSISDN)
  FROM '/srcdata/bcp_export/gn.txt'
  format bcp
  delimited by '|'
  row delimited by '&&&&'
  ESCAPES OFF
  QUOTES OFF
  WITH CHECKPOINT ON
  *COMMIT

注意:

  from指定本地(即文件与数据库是在同一台设备上)数据文件路径
  以上语句中format必须指定bcp。
  另,如果导出的时候不指定列分隔符(-r"&&&&"),那么row delimited by '&&&&'可去掉。
  默认情况下,bcp导出以换行符作为行分隔符。
  所以,请勿在bcp和load table联合使用时指定row delimited by '\x0a' 或者 '\n',否则会报错!

 

Sybase IQ客户端执行导入SQL的两种方式,当然这个要基于你服务器所拥有的客户端(如dbisql或isql):

dbisql -q -c "uid=eastcom;pwd=EastCom!$" -host 127.0.0.1 -port 4100 -nogui [SQL_FILE]

-q表示安静模式,不输出信息。
SQL_FILE可以是SQL语句,也可以是保存SQL语句的文件

 

isql -Ueastcom -PEastCom\!\$ -Sdatamark -i SQL_FILE -o OUTPUT_FILE

SQL_FILE 存有SQL语句的文件
OUTPUT_FILE 输出信息的文件

posted @ 2014-11-17 10:29  lichmama  阅读(912)  评论(0编辑  收藏  举报