从文本load到informix数据库的求助
小弟通过文本往库里面load数据,但是文本中可能有某一行有乱码,会导致无法装入数据,然后脚本就会跳过不进行装数,直接commit了...
譬如如下的例子:
Database selected.
Started transaction.
823 row(s) deleted.
846: Number of values in load file is not equal to number of columns.
847: Error in load file line 1002.
Error in line 2
Near character position 26
Data committed.
Database closed.
在1002行有乱码,但是直接跳出,然后commit了
有没有什么脚本,起这样的功能,
把不能装入数据库的某条数据reject掉,
输出到某指定文本,
然后继续装数,直接到装载完毕整个文本?
请各位大侠帮忙,谢谢
[解决办法]
这个问题有两种方式
1、写C++程序实现吧,程序能捕捉入库时返回的错误代码! 对于报上面错的直接跳过即可
2、判断每行的列数,列数不一致的就不要insert了,这个时候需要一条一条insert,比较慢!
比如用perl或AWK,碰到出现乱码的行,这行的记录数应该跟其他行不一致