问题
在向表里load数据的时候,由于数据量太大,老是报事务太大,无法load
处理方法
1、用文件的切分工具split把一个文件拆分为长度或体积相等的若干文件;
split [参数选项] infile [outfile]
split 把输入的文件拆分为若干体积或长度相等的文件,输入文件保持不变,只是把结果拆分结果写到outfileaa、outfileab ... ... 等文件中。如果我们不指定outfile,被拆分后的文件会写到 xaa、xab ... ...。
参数
-l n 把infile拆分为具有n行的段,默认值为1000
-b n[bkm] 以体积为单位的拆分,约定每拆分后每个文件的大小 ,b代表512B,k代表1KB,m代表1MB。
-C bytes[bkm] 把bytes的最大值放入文件,坚持增加完整的行;
- 从标准输入读取;
--help 帮助;
例:split -l 100000 linuxdoc.txt linuxdocsp 注:切分linuxdoc.txt文件,被切分后的文件名linuxdocsp开头
2、用循环读取的方式将linuxdocsp开头导入数据库中
例:
load_linuxdocsp()
{
echo "导入文件开始...\c"
INFORMIXDIR=/usr/informix
INFORMIXSERVER=$servername
export DBDATE INFORMIXDIR INFORMIXSERVER
/usr/informix/bin/dbaccess $dbname - < load from $line insert into linuxdocsp;
!
echo "\n导入文件结束...\c"
}
ls linuxdocsp* > list.txt
while read line
do
echo "\n"
echo $line
load_linuxdocsp
done < list.txt
echo "\n"
阅读(1589) | 评论(0) | 转发(0) |