sqluldr2回车换行符处理

sqluldr2快速卸载Oracle数据到文本文件

如果表中某条记录的字段含有回车或换行,不作特殊处理将会导出两行记录。

 
  
SQL> select * from test;


A	   B
---------- ----------
中国      1
北京	   1

在上面的汉字后面有一个0x0a换行符,直接导出

 
  
yqlong@yqlong-Notebook:~$ sqluldr2 user=scott/tiger file=a.txt  query=test charset=zhs16gbk field='|'
       0 rows exported at 2012-05-04 23:02:22, size 0 MB.
       2 rows exported at 2012-05-04 23:02:22, size 0 MB.
         output file a.txt closed at 2 rows, size 0 MB.
 
  
 
  
yqlong@yqlong-Notebook:~$ cat -n a.txt 
     1 中国
     2 |1
     3 北京
     4 |1

这样将字段中的换行符直接输出了,导入数据库时肯定是有问题的了。

 
  
yqlong@yqlong-Notebook:~$ ./sqluldr2 user=scott/tiger file=a.txt  query=test charset=zhs16gbk field='|' escape='\' escf=0x0a esct=n
       0 rows exported at 2012-05-04 23:16:06, size 0 MB.
       2 rows exported at 2012-05-04 23:16:06, size 0 MB.
         output file a.txt closed at 2 rows, size 0 MB.
yqlong@yqlong-Notebook:~$ cat -n a.txt 
     1 中国\n|1
     2 北京\n|1

这样整条记录就在一行上了。

看文档说明这个工具支持并行的处理,但据说只支持在服务端的并行,到时测试下。

并行处理的参考说明:http://www.dbatools.net/mytools/parallel-inside-sqluldr2.html

user=scott/tiger
query=select * from emp where rowid >= :minrid and rowid < :maxrid
split=emp
degree=4
file=uldrdata.%p.txt
log=log.%p.log

刚才测的时候老是把上面的minrid和maxrid换成实际的rowid,造成每次导出的几个文件都一样。哈哈。直接按上面的写法就可以了哦,不需要替换。

后面再记录将导出的数据加载到GP上。


工具下载请到 http://www.anysql.net/download


你可能感兴趣的:(数据仓库,Oracle)