【发布时间】:2013-01-13 16:22:55
【问题描述】:
我有一个包含几个数据列的 CSV 文件。
CSV 文件看起来像
字段1:测试1
字段 2:测试 2
字段3:Test3,Test4,Test5
在这种情况下,我可以使用哪个库作为字段终止符,我的意思是如果我使用此查询将 CSV 文件插入到 shopifyitem 表中,因为您假设数据字段插入不正确
BULK INSERT shopifyitem
FROM 'c:\test.csv'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
那么我可以使用哪个字段终止符?
在此先感谢您....
【问题讨论】:
-
对我来说这根本不像 CSV 文件。应该是
Test1,Test2,"Test3,Test4,Test5" -
@AaronBertrand:虽然 Bulk Insert 也无法正确解析。
-
@RBarryYoung 对,我并不是说格式会神奇地起作用,只是 OP 现在拥有的是 不是 CSV。无论如何,当您有古怪的格式、嵌入的逗号等时,您要么需要更改格式或使用其他东西 - SSIS、预解析器、带有格式文件的 BCP 等。很难确定,因为我仍然没有认为我们在问题中看到的正是文件的样子。
-
@AaronBertrand 遗憾的是,Sql Server 内置 nothing 可以正确解析带有引号字段的 CSV,而不是带有格式文件的 BCP,甚至不能正确解析 SSIS。您可以做的最好的事情是使用 SQLBulkCopy 自行滚动,或者将行作为原始文本导入 NVarchar(MAX),然后使用自定义 SQL 解析它们。对不起,这对我来说是个痛点......
-
请发布您尝试插入的数据样本。正如 Aaron Bertrand 评论的那样,您的数据不是 CSV 格式。还包括您要插入的表的 DDL。
标签: sql-server insert bulk