【问题标题】:EXCEL import to sql returning NULL for decimals when in VARCHAR data type在 VARCHAR 数据类型中,EXCEL 导入到 sql 返回小数的 NULL
【发布时间】:2011-01-06 16:02:11
【问题描述】:

我正在开发一种在过去几年中呈指数级增长的软件,并且需要定期更新数据库。客户现在向我们提供大型电子表格的数据,我们将这些数据格式化并将开始导入数据库。我正在使用导入和导出数据(32 位)向导。数据库中的一列包含“1.1.1.2”等值,我将它们作为 Varchar 导入,因为这是数据库中的数据类型。但是,对于像 '8.5' 这样的值,'NULL' 将被导入 insead。它仅在有一位小数时发生。

这是 excel 格式错误还是数据类型错误?

【问题讨论】:

  • 你要导入哪个数据库? SQL Server?
  • 每次这个字段有一个#.#数字时都会发生这种情况吗?如果它偶尔发生,可能是单元格中有尾随空格或换行符。

标签: sql excel import null varchar


【解决方案1】:

在 Excel 中进行格式化。我在导入和导出数据向导和 Excel 方面遇到了很多麻烦,现在我先将 Excel 文件保存为 csv 文件以删除格式,然后再导入它。这样做需要额外的几秒钟,但以后我不必处理前导零被丢弃、随机 NULL 值等问题,从而节省了我的时间。

【讨论】:

    【解决方案2】:

    我给您的第一个建议是让您的客户向您发送文本文件或至少 .csv 文件。 Excel 转换是可怕的,如果您的客户停止为您提供 Excel,您将花费更多的时间来使事情正常工作。

    问题是数据类型是由最早的行决定的,因此如果 Excel 稍后认为数据是 Int 或小数而不是文本,导入将认为这是错误数据并将其清空。

    调整咆哮功能: 我以导入数据为生,我拒绝接受 Excel 文件,因为在尝试导入它们和使用任何其他类型的文件时需要处理很多很多问题。我们不得不向其中一些人发送有关如何将 Excel 文件保存为 .csv 的说明,但如果您根本不接受 Excel 作为数据源,则创建导入的成本要少得多。可悲的是,设计 SSIS(这是向导在后台使用的)的人似乎认为 Excel 是很少有人需要导入的东西,因此没有花时间为它创建一个好的导入路径.这是他们自己公司的产品,可以大声喊叫。人们会认为它会得到一些最好的支持。 关闭咆哮功能。

    【讨论】:

    • 确实如此。我经常发现我必须将文件导入 Access db,然后导入 SQL,以确保不会因截断而丢失任何数据(SQL 导入器喜欢将所有列设为 255)。 Excel 文件可能是一个严重的 PITA。
    【解决方案3】:

    我发现通过运行一个在任何数字字段前面放置一个 ' 的脚本,它们可以很好地导入到 SQL 中。

    我在 12 个电子表格中遇到了这个问题,不知道为什么会出现问题。

    如果您有很多行,一个简单的 VBA 脚本可以轻松完成。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-05
      • 2015-07-21
      • 2020-01-20
      • 1970-01-01
      • 1970-01-01
      • 2021-10-25
      相关资源
      最近更新 更多