sybase数据库,数据导入问题。

来源:百度知道 编辑:UC知道 时间:2024/05/22 15:32:48
现在我需要向一个表里导入一个TXT文件里的数据,用PB连上去用IMPORT,之后发现表中的数据跟TXT中的数据有重复,无法保存,这种情况怎么操作比较好。数据量很大,非常大。

通常借助EXCEL辅助处理。具体做法如下:

1)新建一个Excel文件,将所有单元格的格式都设置成文本内容,再将txt文件中的内容复制、粘贴到这个Excel文件中。 这样可以避免复制时候Excel自动转换数据的格式,如:把数字转成时间形式、自动抹去字符串前面的“0”等,这个功能有时候很让人很恼火。
注意:Excel只能处理65536(行)×256(列),如果你的txt文件中记录数超过65536条的话,只有分次做了。

2)在最前面增加一列,然后在头几个单元格里填入几个数字,1,2,3,4。。。。, 然后用鼠标向下拉,让它自动产生行号(这些数字不重复),最后把这个Excel文件保存成文本文件的形式。

3)在数据库中新建一个临时表,表的结构和刚才做的Excel文件的结构一样。就是第一列是数值型,并且设成主键;其余的列和要导入的表的结构一样。然后向这个临时表里导入刚刚做好的文本文件。
注意:如果你的表中有这样的字段,它是字符型的,不允许为空(NULL),但是有些记录的值是“”(空串),这样在从文本文件导入数据的时候会报错,这个时候数据库认为文本中的数据是NULL,不是空串。所以在创建临时表的时候,如果有这样的字段,一定要设置成允许为空。等数据导入到数据库以后再做处理。

4)现在用SQL语句开始对临时表中的数据进行检查。通常的办法是用group by(字段1,字段2。。。) having count(*) >1。其中,字段1,字段2。。。是那个表的主键。 这样可以找到主键重复的记录,查找重复原因,修改数据。最后把临时表的数据导入正式表里。
注:如果你对Excel比较熟的话,会自己写VBA,也可以再Excel中处理数据。

ok,完活!

BTW, 好像有些数据库允许往没有主键的表里插入数据,好像Foxpro可以,如果我记错了就当我没说,好久没用过那个东西了。如果我没记错的话,也可以将数据导入Foxpro中,对数据处理后再导入正式的数据库中。