是否有一种方法可以将CSV数据导入其中一列包含JSON数据的SQL Server表中?
示例CSV行可能如下:
1,{"testId": 2, "testName":"Hello!"},3,4,5
当我尝试使用以下SQL导入它时,它会选择JSON逗号作为delimeter
BULK INSERT TableName
FROM '<PathToCSV>'
WITH
(
FIRSTROW = 1,
FIELDTERMINATOR = ',',
ROWTERMINATOR = '0x0A',
TABLOCK
)
有没有一种方法可以像Excel处理方式一样,将它们智能地过滤为文字逗号,而不是delimeter?
编辑:假设我无法编辑CSV的
您可以使用CSV
格式说明符和FIELDQUOTE
,以确保引号中包含逗号的值不会被打断。这仅适用于SQL Server 2017以后的版本。
BULK INSERT SchoolsTemp
FROM '<PathToCSV>'
WITH
(
FORMAT = 'CSV',
FIELDQUOTE = '"',
FIRSTROW = 1,
FIELDTERMINATOR = ',',
ROWTERMINATOR = '0x0A',
TABLOCK
)
对于JSON itelf,如果需要,您可以在使用OPENJSON
导入后将其切碎。例如
INSERT SomeTable (Column1, Column2, ParentId)
SELECT
j.Column1,
j.Column2,
p.Id
FROM ParentTable p
CROSS APPLY OPENJSON(p.YourJson)
WITH (
Column1 int,
Column2 varchar(100)
) j;