zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

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

2023-03-14 22:58:38 时间

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