csv Azure SQL上的BULK INSERT错误,但适用于SQL Server

xvw2m8pv  于 12个月前  发布在  SQL Server
关注(0)|答案(1)|浏览(111)

我目前正面临着将CSV文件直接从Blob存储加载到Azure SQL示例的问题。我已经正确设置了凭据,能够访问文件,没有任何问题。但是,当执行BULKINSERT时,它会在某一行失败。我已经尝试了完全相同的文件和完全相同的大容量插入配置在我们的本地SQL服务器上,它的工作没有任何问题。

BULK INSERT dbo.this_is_a_table FROM
        'transformed/this_is_a_csv.csv'
    WITH (
        DATA_SOURCE = 'this_is_a_blob_storage_data_source'
        ,FORMAT = 'CSV' 
        ,FIELDTERMINATOR = '|' 
        ,FIELDQUOTE = '"'
        ,ROWTERMINATOR = '0x0a' 
        ,BATCHSIZE=100000 
        ,TABLOCK
        ,FIRSTROW = 2
        ,CODEPAGE = '65001'
    )

我尝试将FORMAT改为DATAFILETYPE = 'char',尝试旋转ROWTERMINATORS等。还没有任何进展
错误如下:
无法执行查询。错误:由于CSV数据文件transformed/this_is_a_csv.csv中行3128,列10中的列值无效,大容量加载失败。链接服务器“(null)”的OLE DB访问接口“BULK”报告错误。提供程序未给予有关此错误的任何信息。
无法从链接服务器“(null)”的OLE DB访问接口“BULK”提取行。
加载数据直到MAXROW 3127工作正常。我检查了CSV文件,没有什么突出的-基本上与文件中的任何其他行相同。
有什么想法或建议我可以尝试吗?
样本数据:

"MANDT"|"EBELN"|"BUKRS"|"BSTYP"|"BSART"|"BSAKZ"|"LOEKZ"|"STATU"|"AEDAT"|"ERNAM"|"LIFNR"|"EKORG"|"WAERS"|"BEDAT"|"FRGGR"|"FRGSX"|"FRGKE"|"FRGZU"|"FRGRL"|"ABSGR"|"PROCSTAT"
"100"|"4620739302"|"1000"|"F"|"UB"|""|""|"L"|"20230118"|"84HD937J3J392H371842CAZEF91374923HDTAZ32"|"0001000001"|"AB01"|"USD"|"20230118"|"A1"|"S1"|"F"|"XX"|""|"00"|"05"
"100"|"5729302783"|"1000"|"F"|"UB"|""|""|"L"|"20230118"|"84HD937J3J392H371842CAZEF91374923HDTAZ32"|"0001000002"|"AB01"|"USD"|"20230118"|"A1"|"S1"|"F"|"XX"|""|"00"|"05"
"100"|"5720562944"|"1000"|"F"|"UB"|""|""|"L"|"20230118"|"84HD937J3J392H371842CAZEF91374923HDTAZ32"|"0001000003"|"AB01"|"USD"|"20230118"|"A1"|"S1"|"F"|"XX"|""|"00"|"05"
"100"|"8401817494"|"1000"|"F"|"UB"|""|""|"L"|"20230118"|"84HD937J3J392H371842CAZEF91374923HDTAZ32"|"0001000004"|"AB01"|"USD"|"20230118"|"A1"|"S1"|"F"|"XX"|""|"00"|"05"
dced5bon

dced5bon1#

我还试图从存储帐户加载CSV文件到Azure SQL Server与您的示例数据,并得到类似的错误。

该错误可能会导致许多原因,如:

  • 错误的行终止符或字段终止符。
  • 表列大小不正确。

为了解决这个错误,我检查所有列的大小是否与传入的数据对齐,并且每列的数据类型是否正确。并更改了**ROWTERMINATOR*= '\n'**。

BULK INSERT sample2
FROM 'csv1.csv'
WITH (DATA_SOURCE = 'MyAzureBlobStorage'
        ,FORMAT = 'CSV' 
        ,FIELDTERMINATOR = '|' 
        ,FIELDQUOTE = '"'
        ,ROWTERMINATOR = '\n' 
        ,BATCHSIZE=100000 
        ,TABLOCK
        ,FIRSTROW = 0
        ,CODEPAGE = '65001');

输出:

相关问题