一、sqllder 快速导入(服务端,oracle 用户下执行,且文件和目录需要 oracle 的可执行权限)
1、创建目录、将目录权限授权给 oracle 用户(可省略)
使用 root 用户创建目录 示例:mkdir /orctmp
将目录授权给 oracle 用户 示例:chown -R oracle:oracle /orctmp
注意事项:这里以在/目录下创建为例,如果已经存在 orctmp 目录则无需创建
2、创建表、上传 csv 文件
在 oracle 数据库创建表、同时将要导入的数据存为 csv 文件,上传至服务器 orctmp 目录下
3、编写 ctl 脚本文件
vim /orctmp/test.ctl
 options(skip=1,BINDSIZE=20971520, ROWS=10000000, READSIZE=20971520, ERRORS=999999999)load dataCHARACTERSET ZHS16GBKinfile '/orctmp/test.csv' "str'\r\n'"append into table TEST.TESTfields terminated by ','trailing nullcols(ID,TAC,BRAND,PRODUCT,CATEGORY,SDATE "to_date(:SDATE, 'yyyy-mm-dd hh24:mi:ss')")
--参数说明:		--第1行:导入参数配置,已经是支持大量数据导入的参数方案。		--第2行:定义读取文件		--第3行:指定字符集		--第4行:infile指定导入的文件是test.csv		--第5行:into table前面的insert表示导入方式			--insert :默认方式,在导入记录前要求表为空			--append :在表中追加新导入的记录			--replace :删除旧记录(等价delete from table语句),替换成新导入的记录			--truncate:删除旧记录(等价truncate table语句),替换成新导入的记录			--into table后面指定导入数据库表TEST.TEST,且表名必须大写		--第6行:指定每一行的字段是以逗号(,)分隔		--第7行:表的字段没有对应的值时允许为空		--第8行:对应导入表的字段
   复制代码
 
注意事项:如果导入的是时间字段,需要指明时间转换的格式。SDATE “to_date(:SDATE, ‘yyyy-mm-dd hh24:mi:ss’)”
4、使用 sqlldr 导入数据
配置环境变量执行:
 sqlldr userid = oracle/oracle@192.168.0.1:1521/test control='/orctmp/test.ctl' log='/orctmp/import_csv.log'
   复制代码
 
没有配置环境变量执行:
 whereis oracle  --查看oracle可执行文件路径的命令cd /oracle/11.2.0/db_1/bin  --根据上面获取到的路径sqlldr userid = oracle/oracle@192.168.0.1:1521/test control='/orctmp/test.ctl' log='/orctmp/import_csv.log'
   复制代码
 
注意事项:执行导入时,用户名、密码、IP、数据库名、ctl 文件路径配置成自己服务器
至此,sqllder 快速导入完成
二、sqluldr2 快速导出(服务端,oracle 用户下执行)
1、安装 sqluldr2
Linux 链接下载地址:https://www.jb51.net/database/577354.html
Windows 链接下载地址:https://www.jb51.net/database/577355.html
将下载的文件解压,将 sqluldr2_linux64_10204.bin 上传到 oracle 服务器的 bin(/oracle/11.2.0/db_1/bin)目录下,并重命名为 sqluldr2.bin
注意事项:本文所写的对应的是 Linux 版本,Winodws 版参考下载链接里的说明
2、使用 sqlldr2 导出数据
配置环境变量执行:
 ./sqluldr2.bin user=oracle/oracle#@192.168.0.1:1521/test query="select * from test.test;" head=yes file=/output/test.csv charset=ZHS16GBK safe=yes log=/output/export_csv.log
   复制代码
 
没有配置环境变量执行:
 whereis oracle  --查看oracle可执行文件路径的命令cd /oracle/11.2.0/db_1/bin  --根据上面获取到的路径./sqluldr2.bin user=oracle/oracle#@192.168.0.1:1521/test query="select * from test.test;" head=yes file=/output/test.csv charset=ZHS16GBK safe=yes log=/output/export_csv.log
   复制代码
 
注意事项:执行导出时,用户名、密码、IP、数据库名、导出文件路径配置成自己服务器
至此,sqluldr2 快速导出完成
评论