Answers
不给力啊老湿
answered 10 years, 1 month ago
自己解决了。用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
效率完全超出预期,10分钟不到,全导完了。
文艺少年恋菌
answered 10 years, 1 month ago