pl/sql导出数据到txt文件和将txt数据导入到数据库

时间:2024-03-29 12:46:47

1,导出数据到txt文件

工具为pl/sql,spool

1)导出数据脚本

将以下脚本写好后保存为自己的文件名,此处为spool.txt

set feedback off  //回显本次sql命令处理的记录条数,缺省为on
set heading off   //输出导出数据的标题,缺省为on
set verify off       //校验环境变量
set echo off        //显示start启动的脚本中的每个sql命令,缺省为on 
set pagesize 0    //输出每页行数,缺省为24,为了避免分页,可设定为0。
set linesize 100   //输出一行字符个数,缺省为80
set termout off   //去除标准输出每行的拖尾空格,缺省为off
spool E:sql\test.txt    //保存导出数据的文件名
SELECT col_a||'|'||col_b||'|'||col_c from table_a where col_a=1;  //导出的数据格式,此处用管道符‘|’做分割
spool off;   //导出结束
2)打开pl/sql的command窗口

pl/sql导出数据到txt文件和将txt数据导入到数据库
如图,在命令窗口中输入第一步中的文件名,用绝对路径。要有@符号。回车执行。
执行结束后会到下一行
pl/sql导出数据到txt文件和将txt数据导入到数据库
导出速度:我的数据大概90万,执行时间大约2分钟。
结束后可以在E:sql\test.txt看到导出的文件。

2 将导出的文件导入数据库

工具为sqlldr
1,在服务器新建文件 insert.ctl

load data infile
'test.txt'                                    //要导入的txt文件
append into table test_table                  //以追加的方式将数据添加到表test_table
fields terminated by '|'                      //以管道符‘|’分割数据
optionally enclosed by '"'
trailing nullcols
(cola,colb,colc)

2,执行insert.ctl
在命令行 sqlldr user/[email protected] control=insert.ctl

导入速度:90万笔,大概2分40秒