使用向导和建议的数据类型将.csv导入Microsoft SQL Server

时间:2018-04-12 06:47:47

标签: sql-server csv import

前提: 我有一个.csv怪物,有很多资产负债表信息,我需要使用导入/导出向导导入Microsoft SQL Server 2016。我不能使用任何其他导入方法。我需要在数字数据类型中包含一些带有数字的列,但不能通过资产负债表信息的数百列来单独设置数据类型。我无法访问SQL Server安装文件夹以弄乱Data Type Mapping

我使用以下参数在Advanced下的Import Wizard的Data Source部分中使用Suggest Types功能:

  • 行数:2000
  • 建议最小的整数数据类型:检查
  • 建议最小的实际数据类型:检查
  • 使用以下值标识布尔列:使用True检查, 假
  • 填充字符串列:使用20%填充检查

我也试过了两个最小的类型选项未选中。

其中包含数字的其中一列TOTAL_SALES被检测为数据类型float [DT_R4]。原始.csv文件中该列的一些示例值为:

.0000
48796000.0000
1813535000.0000

我继续导入向导并选择我想要创建的SQL服务器和目标表。在Edit Mappings菜单中,我看到将使用数据类型real创建列。在窗口的底部,它清楚地表明了Source column: TOTAL_SALES float [DT_R4]

单击“确定”,“下一步”,然后转到“查看数据类型映射”部分。 TOTAL_SALES列有一个绿色复选标记,表示源类型float [DT_R4]和目标类型real。 OnError和OnTruncation为空。我将Global OnError和OnTruncation事件设置为Ignore。

我完成导入向导并收到以下错误:

  

错误0xc02020a1:数据流任务1:数据转换失败。数据   列的转换" TOTAL_SALES"返回状态   值2和状态文本"由于a,无法转换该值   潜在的数据丢失。"。 (SQL Server导入和导出向导)

我尝试在Excel中打开.csv并将其保存为.xlsx,同时还将TOTAL_SALES数据类型设置为number。也没有帮助,因为在向导中,源类型现在是VarChar,目标类型被识别为real,我得到黄色警告标志,导入当然失败并出现相同的错误。< / p>

我不知道为什么导入向导使用real或为什么在floatreal之间进行转换(无论如何只是float(24) according to MSDN )与数据丢失有关。查看列,它看起来总是存储4个小数位,因此dec(something.4)也应该是向导可以使用的数据类型。

如何使用自动化解决方案导入此列?

0 个答案:

没有答案