批量插入时出错

Ani*_*wal 7 sql t-sql sql-server excel bulkinsert

我在尝试批量插入时遇到错误:

BULK INSERT #tbl_InterCompanyUploadDetail_Staging 
FROM '\\SVRP03546008461D\QA\UploadTemplatewithvalidation.xlsx'
 WITH (FIRSTROW = 6, FIELDTERMINATOR ='\t', ROWTERMINATOR ='\\n' )
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

第6行第2行(Oracle公司代码)的批量加载数据转换错误(截断).

Excel中的列的数据为470,数据库列中的列为varchar(10).那可能是错误的原因.

Had*_*adi 5

问题

BULK INSERT可能无法使用xlsx文件,尝试将.xlsx文件转换为.csv文件来实现此目的(使用BULK INSERT)

第一个解决方案 - 使用OPENROWSET

尝试使用OPENROWSET提供Microsoft.ACE.OLEDB.12.0者:

Insert into <rawdatatable> 
select * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 
                         'Excel 12.0;Database=D:\SSIS\FileToLoad.xlsx;HDR=YES', 
                         'SELECT * FROM [Sheet1$]')
Run Code Online (Sandbox Code Playgroud)

要么

SELECT * INTO Data_dq
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0; Database=D:\Desktop\Data.xlsx', [Sheet1$]);
Run Code Online (Sandbox Code Playgroud)

第二个解决方案 - 使用OPENDATASOURCE

SELECT * INTO Data_dq
FROM OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0',
'Data Source=D:\Desktop\Data.xlsx;Extended Properties=Excel 12.0')...[Sheet1$];
Run Code Online (Sandbox Code Playgroud)

参考