一、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 data
CHARACTERSET ZHS16GBK
infile '/orctmp/test.csv' "str'\r\n'"
append into table TEST.TEST
fields 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 快速导出完成
评论