数据导入时有特殊字符报错

earthpea 2006-12-13 03:55:03
有一大批数据需要导入数据库,使用LOAD进行导入,但报846的错,问题如下:

数据共1000条,有3条报错,这3条的结构和其他是一样的,不应该是字段不足。数据如下:
正确可以导入的数据:
8|周集新|M|2000-1-1|6|2006-9-1|2007-8-31|L|K|O|0|0|1
9|李璇|F|1999-6-13|7|2006-9-1|2007-8-31|L|K|O|0|0|1
10|柏芊|F|1999-8-9|7|2006-9-1|2007-8-31|L|K|O|0|0|1
第一列是序号,第二列是姓名,第三列是性别,第四是生日,第五、第六是学年起止日,后面的都是一些标志位。

报错的数据:
11|赵珅琦|M|1998-11-13|7|2006-9-1|2007-8-31|L|K|O|0|0|1
239|侯羿珅|M|2002-6-21|4|2006-9-1|2007-8-31|L|K|O|0|0|1
1000|苏玉晶|F|1994-04-01|12|2006-9-1|2007-8-31|L|K|O|0|0|1

我看了一下,怀疑是不是姓名有问题,因为有2条数据都包含了一个非GB2312字“珅”,但是最后一条数据的姓名没有什么问题呀,ASC码如下:

$ cat a
苏玉晶
赵珅琦
侯羿珅
$ hd a
0000 cb d5 d3 f1 be a7 0a d5 d4 ab 7c e7 f9 0a ba ee
0010 f4 e0 ab 7c 0a

报错信息:
846: Number of values in load file is not equal to number of columns.
847: Error in load file line 11.
用ISQL建Form表,手工add数据,报错如下:
The column "XXXXXX" does not allow null values.
查看建表语句,一般都是:
XXXXXXX varchar(1,1)
default 'N' not null ,
XXXXXXX decimal(1,0)
default 0 not null ,
将所有not null的字段填写满,add成功!

分析这种情况的,也就是说,如果在load或者add的数据中,有一定组合的字符存在,比如说是“珅”字或者“苏玉晶”三个字中有某个组合,所有not null字段的default就不起作用了,必须要指定数值才行。

请问这种情况要如何判断,怎么处理?谢谢。
...全文
822 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dreamloversun 2007-02-27
  • 打赏
  • 举报
回复
这个不是字符集的问题,我以前也是经常遇到这样的问题,是“|”分隔的问题,因为它的ASCII为7C,而“珅”字的ASCII为“AB 7C”,在load的时候系统在导入珅的时候以为遇到分隔符了,所以就只导入了前面的数据,这样导致的结果为该行数据多了一个字段,所以导入的时候肯定会出错,导入汉字的时候经常有这个问题,解决这个问题的方法,如果用程序导入的话用insert游标的方式可以解决,如果用shell的话,用dbload的方式,把正确的数据导入,出错的数据重定向到一个文件中,然后对这部分数据进行处理。如果还不清楚,可以加msn:benserver@163.com来交流
shao99 2007-02-26
  • 打赏
  • 举报
回复
主要还是导出与导入的数据库版本或设置不一致造成的。
zrf8866 2007-02-01
  • 打赏
  • 举报
回复
在修改.profile文件时要当心。不然数据库会找不到定位的。
方法如下:
1,dbexport 数据,drop 数据库(作时当心一点哦。不要说我没有提醒)
2,onmode -ky
3,修改 .profile文件
4.oninit数据库
5.dbimport
6.ok...............
--------请在开发机上先测试一下,没有问题了再上生产机上作-------------
安全第一...
zrf8866 2007-02-01
  • 打赏
  • 举报
回复
这个好办。方法一,(注.profile中
export DB_LOCALE=zh_CN.gb
export CLIENT_LOCALE=zh_CN.gb )
informix isql 进入为中文菜单。。。
1。在前台windows xp 上安装 informix cli2.5TD2
2。安装c++ builder 或dephi ,建表别名。
3。用其中的datadump 把数据传到informix 中。
4。把自动产生的表插入informix数据库中。
5。但有一个问题就是。数据是插入了,但是如“非GB2312字“珅””,在informix中显示不了。
方法二:

注.profile中
#export DB_LOCALE=zh_CN.gb
#export CLIENT_LOCALE=zh_CN.gb )
informix isql 进入为英文菜单。。。
1。在前台windows xp 上安装 informix cli2.5TD2 配置好。
2。安装sql server 2000,设置ODBC.
3。用其中的sql导入导出 把数据传到informix 中。
4。把自动产生的表插入informix数据库中。
5。但有一个问题就是。数据是插入了,但是如“非GB2312字“珅””,在informix中显示也正确。但是unload 出时“珅”变成了“珅\”.


baibai326 2007-01-19
  • 打赏
  • 举报
回复
我也遇到过,当时是一条条提取出来,然后改成拼音,再修改。更晕
earthpea 2006-12-15
  • 打赏
  • 举报
回复
我又试了一次,就算把所有的not null字段都加到unl文件里了,还是报一样的错,头晕中……

1,195

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 Informix
社区管理员
  • Informix社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧