前提: 我有一个.csv怪物,有很多资产负债表信息,我需要使用导入/导出向导导入Microsoft SQL Server 2016。我不能使用任何其他导入方法。我需要在数字数据类型中包含一些带有数字的列,但不能通过资产负债表信息的数百列来单独设置数据类型。我无法访问SQL Server安装文件夹以弄乱Data Type Mapping。
我使用以下参数在Advanced下的Import Wizard的Data Source部分中使用Suggest Types功能:
我也试过了两个最小的类型选项未选中。
其中包含数字的其中一列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
或为什么在float
和real
之间进行转换(无论如何只是float(24)
according to MSDN )与数据丢失有关。查看列,它看起来总是存储4个小数位,因此dec(something.4)
也应该是向导可以使用的数据类型。
如何使用自动化解决方案导入此列?