【问题标题】:Type mismatch in SQLSQL 中的类型不匹配
【发布时间】:2013-10-06 19:52:52
【问题描述】:

我有一张表,其中一列的类型为numeric(18,9)。我正在尝试从 csv 文件批量插入此表。请注意,csv 文件和表之间的列匹配。

csv 中的一列,有一些数字,格式为:3E-445E-2 等(其中E 是权力的象征)。

在尝试将数据批量插入 SQL 表时,我收到 there is a type mismatch 针对该特定列的错误。该错误肯定是由任何格式的数字引起的,例如5E-4.

注意:当使用 type() 在 excel 中检查列类型时,所有单元格都返回 1 -> 这意味着该列在 csv 文件中属于 numeric 类型。

有什么办法可以克服这个错误?

谢谢,

【问题讨论】:

  • 这是另一个人对同一问题的解决方案。他们使用两步法 - stackoverflow.com/a/7473216/1504882
  • 感谢您的提示。唯一的问题是我的问题规模更大:换句话说,我有很多专栏都有这个问题。如何自动更新表格的所有列,而无需单独键入每个列的名称?

标签: sql sql-server sql-server-2005 bulkinsert


【解决方案1】:

也许您可以尝试分两步进行。首先,您将数据导入到所有数字列都是 varchar 类型的其他表中,然后将其转换为十进制并插入到另一个像这样的表中。

select CONVERT(decimal(18,9), CONVERT(float, '3E-4'))

【讨论】:

  • 我尝试先转换为浮点数,但仍然出现相同的错误...这是我尝试执行的查询:ALTER TABLE <mytable> ALTER COLUMN <mycolumn> FLOAT。仍然出现相同的类型不匹配错误。
猜你喜欢
  • 1970-01-01
  • 2020-02-17
  • 1970-01-01
  • 1970-01-01
  • 2015-05-28
  • 2020-03-31
  • 2014-12-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多