【问题标题】:importing quoted csv data into sql server将引用的csv数据导入sql server
【发布时间】:2012-10-23 22:01:29
【问题描述】:

我的 CSV 文件中的数据如下所示:

"2745","00","8824","02/15/99","-850.00","-144.20","0.00","0.00","0.00","0.00","-994.20","0.00",""

我正在尝试使用 SSMS 的导入向导将其导入到 SQL Server 中的表中,但我认为我遇到了转换错误。

例如,第 2 列(第三列)在表格中设置为数字,第 3 列设置为日期,导入向导抱怨在转换中丢失数据。我可以理解它正在尝试从字符串转换为数字或字符串到日期,但是我如何告诉它转换数据?导入向导可以做到吗?

如果没有,推荐的方法是什么?让它导入到自己的表中,然后将数据复制到目标表中并在复制期间进行转换?

【问题讨论】:

  • 您可以编写自定义查询和CONVERT/CAST 必要的列。

标签: sql-server import


【解决方案1】:

如果您使用的是平面文件源,则可以通过选择 Advanced 然后为每列指定类型来选择传入列的数据类型。

【讨论】:

  • 这似乎没有帮助。如果我告诉它第 2 列(第三)是一个数字,它会错误地说它由于潜在的数据丢失而无法转换。 - 引用所有值是否有问题?我可以获得要遇到的文本值(前 2 列和最后一列)错误 0xc02020a1:数据流任务 1:数据转换失败。列“列 2”的数据转换返回状态值 2 和状态文本“由于可能丢失数据,无法转换值。”。 (SQL Server 导入导出向导)
  • 那么您要么有一些非数字数据,要么需要在该字段中使用更大的比例。我会将它作为字符串(实际上所有字段作为字符串)放入临时/临时表中,然后使用处理所有必要转换的 TSQL INSERT 语句将其加载到目标表中。您还可以创建一个成熟的 SSIS 包来处理转换,但除非它是您要定期执行的导入,否则使用临时表是最有意义的。导入向导创建一个简单的 SSIS 包,但没有任何转换逻辑。
  • 我最终将输入文件更改为管道分隔并删除引号。这使我可以在向导中设置输入的值,现在它正在导入。非常感谢您的帮助!
  • 乐于(尝试)提供帮助。很高兴你能够度过难关。
猜你喜欢
  • 2012-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-10
  • 2021-02-04
  • 2012-04-05
  • 1970-01-01
  • 2010-11-30
相关资源
最近更新 更多