如何将CSV文件转换为bcp格式的文件?

时间:2019-09-16 11:55:44

标签: sql-server bulkinsert bcp

我正在将CSV文件导入SQL Server表的任务。我正在使用bcp工具,因为我的数据可能很大。 bcp面临的问题是我要导入CSV的表可以包含日期,整数等数据类型的混合,如果我使用本机模式(-n)使用bcp,我将需要bcp文件作为输入但我有CSV文件。

有什么方法可以将CSV文件转换为bcp文件?要么 鉴于我的表列可以具有任何数据类型,而不仅仅是字符类型,如何将CSV文件导入SQL Server表中?

如果所有列都是字符类型,我本来会使用带有-c选项的bcp工具。

2 个答案:

答案 0 :(得分:0)

实际上...导入数据时最安全的做法是,首先将其导入到登台表中,尤其是在这样批量插入数据时。在这种情况下,所有字段都是字符串/ varchars。然后,您可以清理/验证数据并确保数据可以安全使用。然后,在验证之后,将其移动/复制到生产表中,并随即转换为正确的类型。通常,这是我在处理导入数据时要做的。

答案 1 :(得分:0)

CSV文件只是一个以逗号分隔的文本文件。关于导入文本文件,没有“ BCP”文件之类的东西。 BCP可以选择使用本机SQL数据(使用文本编辑器无法识别),但是默认设置是仅处理与CSV文件中的文本相同的文本。不需要转换,使用文本数据,就没有诸如“ BCP文件”之类的东西。这只是一个ASCII文本文件。

创建文本文件的人已经完成了从其自然数据类型到文本的转换。正如其他人所建议的那样,如果您只是将文本CSV数据文件加载到所有“ VARCHAR”字段的“加载”表中,则稍后将为自己省去一些麻烦。然后,您可以从该加载表中将数据处理为最终目标表中所需的任何数据类型。这样做比让BCP将数据直接插入最终目标表中来使SQL进行隐式转换要好。