写点什么

Oracle sqlldr 快速导入和 sqluldr2 快速导出

发布于: 2021 年 02 月 25 日
Oracle sqlldr快速导入和sqluldr2快速导出

一、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 快速导出完成


发布于: 2021 年 02 月 25 日阅读数: 23
用户头像

让优秀成为一种习惯!!! 2021.02.24 加入

大数据技术知识分享

评论

发布
暂无评论
Oracle sqlldr快速导入和sqluldr2快速导出