当前位置: 代码迷 >> Informix >> informix load 有关问题
  详细解决方案

informix load 有关问题

热度:2771   发布时间:2013-02-26 00:00:00.0
informix load 问题
load操作还在进行中 loading from file XXXX.unl ......
但是表的数据量却没有变化,剩下100多万条数据没有导入完成。

请问这是为什么?
这个操作是在不同服务器间做数据导入导出的,unload 然后load ,请问有什么比较好的方法吗?如何操作?


------解决方案--------------------------------------------------------
执行时候有什么错误提示么?
------解决方案--------------------------------------------------------
在select 上面,加一句set isolation to dirty read;
再看看。
------解决方案--------------------------------------------------------
探讨
在select 上面,加一句set isolation to dirty read;
再看看。

------解决方案--------------------------------------------------------
你可以把要load 的文件 分割成几个小文件,用VI或 是head,tail 什么的。load的文件太大最好是不要对表加索引或是事务,这样会快点。先装个几千条试试看数据有没有问题。
------解决方案--------------------------------------------------------
分割成几个小文件
------解决方案--------------------------------------------------------
你怎么连的数据库?用工具?
可能是数据量太大,造成会话超时了吧。
建议你在数据库上写shell脚本,然后用honup指定脚本在后台执行,并打印日志,这样你就可以很容易查看执行进度了。
------解决方案--------------------------------------------------------
刚才写错了一点,那个命令是nohup,不是honup。
------解决方案--------------------------------------------------------
100W数据量也不大啊。。把数据库改成无日志的试试吧。这样能快些
------解决方案--------------------------------------------------------
估计是进入了长事务的状态了,导致数据导入回滚了,如果可能把数据库的日志方式去掉BUFFER。如果不会去掉日志方式,建议把文件分离开,拆分成30万条一个文件再导入,如果还不行,也可以考虑使用INFORMIX自带的导入工具DBINMPORT进行导入,那里面可以设置多少条记录一提交
------解决方案--------------------------------------------------------
上次在导入表的时候也遇到了这样的问题,当导入到38887条时报错。
怀疑是那条数据乱码,删掉后再导入任然在那条报错;
以为是导入数据大小有限制,后来将数据分割为几个文件导入就没有问题了。
总之,在导入数据前先删掉索引,分批次导入吧。
------解决方案--------------------------------------------------------
如果上面说的都不行的话 看看数据库空间的适用情况,看看是不是没有free的空间了?
------解决方案--------------------------------------------------------
这个明显不能用load 数据量太大的话 会中断的 建议用dbload命令 使用方法直接在informix用户下输入dbload就可以看到 可以分批次导入数据。
------解决方案--------------------------------------------------------
100万其实数据量还是蛮大的
------解决方案--------------------------------------------------------
在导入数据的时候,会锁表,这样应该不会允许查询的。
------解决方案--------------------------------------------------------
set isolation to dirty read;
select count(*) from table
------解决方案--------------------------------------------------------
上百万条数据导入最好使用dbload工具
------解决方案--------------------------------------------------------
[code=bas]h
#!/bin/ksh
#===========================================================================
#filename:dbload.sh
#功能:
#从文件导入海量数据到informix数据库中
#主要是解决海量数据导入问题,当直接使用形如:
#load from loadfile.txt insert into tablename;
#导入数据时,如果数据超过几百万条则会使缓存被充满而无法导入
#input: nameDB nameTable dataFile
#注意:
#1.程序需要informix load 支持
#2.数据文件第行应以"|"结尾
#===========================================================================

#参数输入
if [ $# -ne 3 ];then
cat < < EOF
Usage: $0 nameDB nameTable dataFile

nameDB    数据库名
nameTable  数据库表名
dataFile  即将导入数据库的数据文件
EOF
exit 1
fi

nameDB="$1" #数据库名
nameTable="$2" #数据库表名
dataFile="$3" #即将导入数据库的数据文件

if [ ! -f "$dataFile" ];then
echo " <ERROR>数据文件[$dataFile]不存在!" | tee -a $errLog
exit 1
fi

tmpStr0=`echo $dataFile | sed "s/\//_/g"`
  相关解决方案