我正在开发一个软件,它在过去几年里有了惊人的增长,数据库需要定期更新。客户现在以大型电子表格的形式向我们提供数据,我们将格式化这些数据,并开始将其导入数据库。我正在使用导入和导出数据(32位)向导。数据库中的一列包含类似于'1.1.1.2‘等的值,我将它们导入到数据库中,因为这是数据库中的数据类型。但是,对于像'8.5‘这样的值,'NULL’将导入insead。只有当有一个小数点时才会发生。
这是excel的格式错误还是数据类型错误?
发布于 2011-01-07 06:44:34
它是在Excel中设置格式。我在使用导入和导出数据向导和Excel时遇到了很多问题,所以现在我首先将Excel文件保存为csv文件,以删除格式化,然后再导入它。这样做花费了额外的几秒钟,但节省了我后来不得不处理前导零被丢弃,随机空值等的时间。
发布于 2011-01-07 06:52:13
我给你的第一个建议是让你的客户给你发送文本文件,或者至少是.csv文件。Excel的转换是可怕的,如果你的客户一开始就不给你Excel,你将花费更多的时间来让事情正常工作。
问题是数据类型是由最早的行决定的,因此如果Excel认为后面的数据是Int或decimal而不是文本,导入将认为这是错误数据并将其设为空。
调整rant功能:我以导入数据为生,我拒绝接受Excel文件,因为在尝试导入它们和任何其他类型的文件时,有许多更多的问题需要处理。我们不得不向他们中的一些人发出指示,告诉他们如何将Excel文件保存为.csv,但如果您只是不接受Excel作为数据源,那么创建导入就会花费更少的钱。令人遗憾的是,设计SSIS的人(向导正在幕后使用SSIS)似乎认为Excel是很少有人需要导入的东西,因此没有花时间为它创建一个好的导入路径。这是他们自己公司的产品。人们会认为它会得到一些最好的支持。关闭rant功能。
发布于 2011-11-19 05:02:39
我发现,通过运行一个脚本,在任何数字字段前面加一个‘,就可以很好地将它们导入SQL中。
我在12个电子表格中有一个遇到了这个问题,不知道为什么它会成为一个问题。
如果您有很多行,一个简单的VBA脚本就可以让这一切变得很容易。
https://stackoverflow.com/questions/4616883
复制相似问题