小编典典

将CSV文件导入SQL Server

python

我正在寻找使用导入.csv文件到SQL Server的帮助BULK INSERT,我有几个基本问​​题。

问题:

  1. CSV文件数据的,中间(例如:描述)之间可能有(逗号),那么如何进行导入处理这些数据?

  2. 如果客户端从Excel创建CSV,则用逗号括起来的数据""(用双引号引起来)(如下例所示),那么导入如何处理呢?

  3. 我们如何跟踪某些行是否包含不良数据,哪些导入会跳过?(导入会跳过不可导入的行)

这是带标题的CSV示例:

Name,Class,Subject,ExamDate,Mark,Description
Prabhat,4,Math,2/10/2013,25,Test data for prabhat.
Murari,5,Science,2/11/2013,24,"Test data for his's test, where we can test 2nd ROW, Test."
sanjay,4,Science,,25,Test Only.

和SQL语句导入:

BULK INSERT SchoolsTemp
FROM 'C:\CSVData\Schools.csv'
WITH
(
    FIRSTROW = 2,
    FIELDTERMINATOR = ',',  --CSV field delimiter
    ROWTERMINATOR = '\n',   --Use to shift the control to next row
    TABLOCK
)

阅读 179

收藏
2021-01-20

共1个答案

小编典典

基于SQL Server CSV导入

1)CSV文件数据之间可能有,(逗号)(例如:描述)之间的(逗号),那么如何进行导入处理这些数据?

如果您使用,(逗号)作为分隔符,则无法区分作为字段终止符的逗号和数据中的逗号。我会用不同的FIELDTERMINATOR赞||。代码看起来像这样,它将完美地处理逗号和单斜杠。

2)如果客户端从excel创建csv,则将逗号分隔的数据括在” … “(双引号)中(如下例所示),那么导入如何处理呢?

如果您使用的是大容量插入,则无法处理双引号,数据将以双引号插入行中。将数据插入表后,您可以将这些双引号替换为’ ‘。

update table
set columnhavingdoublequotes = replace(columnhavingdoublequotes,'"','')

3)我们如何跟踪某些行是否包含不良数据,哪些导入会跳过?(导入会跳过不可导入的行)吗?

要处理由于无效数据或格式而未装入表的行,可以使用ERRORFILE属性处理,指定错误文件名,它将有错误的行写入错误文件。代码应如下所示。

BULK INSERT SchoolsTemp
    FROM 'C:\CSVData\Schools.csv'
    WITH
    (
    FIRSTROW = 2,
    FIELDTERMINATOR = ',',  --CSV field delimiter
    ROWTERMINATOR = '\n',   --Use to shift the control to next row
    ERRORFILE = 'C:\CSVDATA\SchoolsErrorRows.csv',
    TABLOCK
    )
2021-01-20