1. 通过dmp 导入导出,这种情况一般需要注意用户的命名空间
2. 通过sqlldr实现
必要文件:ctl 控制文件、程序文件、导入导出命令
2.1.控制文件: 确定表结构、切分符号、导入
test.ctl
Load data
Characterset ZHS16GBK
--truncate 表示插入前清空表
Append #表示插入的时候直接插入
Into table test #test 是要插入的表
Fields terminated by X’7c’ #表示切割符,X表示16进制,7c 就是 |
Trailing nullcos
{
ID “trim{:ID}”, #字段id
END_DT DATE “yyyy-mm-dd”, # date 类型的数据
NAME “trim{:NAME}”
}
2.2.导出语句
sqluldr264.exe user=数据库名/数据库密码 query=”select id,end_dt,name from text” table=D:\test.ctl head=yes file=D:\\result.txt
上面的话是window 的,下面给个Linux的,将sqluldr2_linux64_10204.bin上传到oracle服务器的bin(/oracle/11.2.0/db_1/bin)目录下,并重命名为sqluldr2.bin
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
2.3.导入语句
sqlldr userid=数据库名/数据库密码 control=D:\test.ctl data=D:\\insert.txt log=D:\test.log bad=D:\test.bad errors=50000 bindsize=8000000 rows=5000
Linux的有所变动,如下
sqlldr userid = oracle/oracle@192.168.0.1:1521/test control='/orctmp/test.ctl' log='/orctmp/import_csv.log'
2.4.注意
文件字符集要与Oracle服务等字符集一致,要不然会导致导入中文乱码