需要导出30多万行的数据,使用PL/SQL Developer导出时1个多小时没有反应过来,只能关闭程序。网上找到了解决方案
sqluldr2。
使用方法:
Usage: SQLULDR2 keyword=value [,keyword=value,...]
Valid Keywords:
user = username/password@tnsname 连接Oracle字符串。用户/密码@实例名
sql = SQL file name SQL文件名
query = select statement 查询SQL,注意使用双引号括起来
field = separator string between fields 字段间分隔符
record = separator string between records
rows = print progress for every given rows (default, 1000000) 一次性读取记录条数,能提高性能
file = output file name(default: uldrdata.txt) 输出文件名称
log = log file name, prefix with + to append mode 日志文件,假如输出日志文件控制台上就不显示提示信息
fast = auto tuning the session level parameters(YES)
text = output type (MYSQL, CSV, MYSQLINS, ORACLEINS, FORM, SEARCH). 输出类型
charset = character set name of the target database. 字符集
ncharset= national character set name of the target database.
parfile = read command option from parameter file
for field and record, you can use '0x' to specify hex character code,
\r=0x0d \n=0x0a |=0x7c ,=0x2c, \t=0x09, :=0x3a, #=0x23, "=0x22 '=0x27
参考帮助写了命令,但是执行失败出现ora-24345错误。网上查找资料发现:大多数都是文字过程缓冲区不足,使用老版本的解决方法加上
safe=yes选项,但是没用。发现上面也没有safe选项。
换个表的查询语句好用,速度很快。逐渐调试,最后确定是字段类型的问题。
SQLULDR2不支持binary_double类型,将它修改为number再执行ok!
转换语句如下:
SELECT CAST(field as NUMBER(12,4)) N1
速度非常快,30多万数据3,4秒钟导出!