linux主机,oracle数据库
怎么快速的导入数据。
数据量在200万条左右,文件是文本格式,每一行为一条记录,每条记录的字段以|号分格。
现在用C写的导入程序,处理这200万条数据大概需要6个小时,这完全不能满足需求。
请问有什么方法能够做到快速导入,最好能在1个小时内完成。
自己解决了。用sqlldr
先写一个insert.ctl文件
load data
infile '20141010_1_3gpostuser_759.txt'
append into table BI_3G_POSTPAYUSER_T
fields terminated by '|' #字段分割符
(
row1,
row2 ,
……
)
注:因为我这个数据是追加,所以用append,如果纯插入空表,可以用insert。
除此外还有其他几种方式
REPLACE // 原先的表有数据 原先的数据会全部删除
TRUNCATE // 指定的内容和replace的相同 会用truncate语句删除现存数据。
再写个insert.sh,用来执行。因为我这要导三个文件,用了个循环。
#!/bin/sh
#最好把环境变量也引入下
filelist=$(ls)
for file in $filelist
do
sed -i "s/20.*_3gpostuser_7.*\.txt/${file}/g" /home/interface/insert.ctl
sqlldr user/pass@sid control=/home/interface/insert.ctl #控制器路径
mv $file ../bak/$file'.bak'
done
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。