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

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就不起作用了,必须要指定数值才行。

请问这种情况要如何判断,怎么处理?谢谢。
...全文
797 6 打赏 收藏 转发到动态 举报
写回复
用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. 页面链接检查:每一个链接是否都有对应的页面,并且页面之间切换正确。可以使用一些工具,如LinkBotPro、File-AIDCS、HTML Link Validater、Xenu等工具。LinkBotPro不支持中文,中文字符显示为乱码;HTML Link Validater只能测试以Html或者htm结尾的网页链接;Xenu无需安装,支持asp、do、jsp等结尾的网页,xenu测试链接包括内部链接和外部链接,在使用的时候应该注意,同时能够生成html格式的测试报告。如果系统用QTP进行自动化测试,也可以使用QTP的页面检查点检查链接。   2. 相关性检查:   ? 功能相关性:删除/增加一项会不会对其他项产生影响,如果产生影响,这些影响是否都正确,常见的情况是,增加某个数据记录以后,如果该数据记录某个字段内容较长,可能会在查询的时候让数据列表变形。   ? 数据相关性:下来列表默认值检查,下来列表值检查,如果某个列表的数据项依赖于其他模块中的数据,同样需要检查,比如,某个数据如果被禁用了,可能在引用该数据项的列表中不可见。   3. 检查按钮的功能是否正确:如新建、编辑、删除、关闭、返回、保存、导入,上一页,下一页,页面跳转,重置等功能是否正确。常见的错误会出现在重置按钮上,表现为功能失效。   4. 字符串长度检查: 输入超出需求所说明的字符串长度的内容, 看系统是否检查字符串长度。还要检查需求规定的字符串长度是否是正确的,有时候会出现,需求规定的字符串长度太短而无法输入业务数据。   5. 字符类型检查: 在应该输入指定类型的内容的地方输入其他类型的内容(如在应该输入整型的地方输入其他字符类型),看系统是否检查字符类型。   6. 标点符号检查: 输入内容包括各种标点符号,特别是空格,各种引号,回车键。看系统处理是否正确。常见的错误是系统对空格的处理,可能添加的时候,将空格当作一个字符,而在查询的时候空格被屏蔽,导致无法查询到添加的内容。   7.特殊字符检查:输入特殊符号,如@、#、$、%、!等,看系统处理是否正确。常见的错误是出现在% ‘ \ 这几个特殊字符   8. 中文字符处理: 在可以输入中、英文的系统输入中文,看会否出现乱码或出错。   9. 检查信息的完整性: 在查看信息和更新信息时,查看所填写的信息是不是全部更新,更新信息和添加信息是否一致。要注意检查的时候每个字段都应该检查,有时候,会出现部分字段更新了而个别字段没有更新的情况。   10. 信息重复: 在一些需要命名,且名字应该唯一的信息输入重复的名字或ID,看系统有没有处理,会否报错,重名包括是否区分大小写,以及在输入内容的前后输入空格,系统是否作出正确处理。   11. 检查删除功能:在一些可以一次删除多个信息的地方,不选择任何信息,按“delete”,看系统如何处理,会否出错;然后选择一个和多个信息,进行删除, 看是否正确处理。如果有多页,翻页选,看系统是否都正确删除,并且要注意,删除的时候是否有提示,让用户能够更正错误,不误删除。   12. 检查添加和修改是否一致: 检查添加和修改信息的要求是否一致,例如添加要求必填的项,修改也应该必填;添加规定为整型的项,修改也必须为整型.   13. 检查修改重名:修改时把不能重名的项改为已存在的内容,看会否处理,报错.同时,也要注意,会不会报和自己重名的错.   14. 重复提交表单:一条已经成功提交的纪录,返回后再提交,看看系统是否做了处理。对于Web系统来说,可以通过浏览器返回键或者系统提供的返回功能。   15. 检查多次使用返回键的情况: 在有返回键的地方,返回到原来页面,重复多次,看会否出错。   16. 搜索检查: 有搜索功能的地方输入系统存在和不存在的内容,看搜索结果是否正确.如果可以输入多个搜索条件,可以同时添加合理和不合理的条件,看系统处理是否正确,搜索的时候同样要注意特殊字符,某些系统会在输入特殊字符的时候,将系统中所有的信息都搜索到。   17. 输入信息位置:注意在光标停留的地方输入信息时,光标和所输入的信息会否跳到别的地方。   18. 上传下载文件检查:上传下载文件的功能是否实现,上传文件是否能打开。对上传文件的格式有何规定,系统是否有解释信息,并检查系统是否能够做到。下载文件能否打开或者保存,下载的文件是否有格式要求,如需要特殊工具才可以打开等。上传文件测试同时应该测试,如果将不能上传的文件后缀名修改为可以上传文件的后缀名,看是否能够上传成功,并且,上传文件后,重新修改,看上传的文件是否存在。   19. 必填项检查:应该填写的项没有填写时系统是否都做了处理,对必填项是否有提示信息,如在必填项前加“*”;对必填项提示返回后,焦点是否会自动定位到必填项。   20. 快捷键检查:是否支持常用快捷键,如Ctrl+C、 Ctrl+V、 Backspace等,对一些不允许输入信息的字段,如选人,选日期对快捷方式是否也做了限制。   21. 回车键检查: 在输入结束后直接按回车键,看系统处理如何,会否报错。这个地方很有可能会出现错误。   22.刷新键检查:在Web系统中,使用浏览器的刷新键,看系统处理如何,会否报错

1,195

社区成员

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

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