sql - 批量插入时出现错误

标签 sql sql-server excel tsql bulkinsert

当我尝试批量插入时出现错误:

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

我收到的错误是:

Bulk load data conversion error (truncation) for row 6, column 2 (Oracle Company Code).

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

最佳答案

问题

BULK INSERT 可能不适用于 xlsx 文件,请尝试将 .xlsx 文件转换为 .csv 文件来实现此(使用BULK INSERT)

第一个解决方案 - 使用 OPENROWSET

尝试将 OPENROWSETMicrosoft.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$]')

或者

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

第二个解决方案 - 使用 OPENDATASOURCE

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

引用文献

关于sql - 批量插入时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50152987/

相关文章:

sql - 获取今天午夜的日期和时间并添加到其中

mysql - 在 mysql 列中查找不连续的重复文本

sql - 使用 SQL 将度/分/秒转换为小数

mysql - 一个月从另一天开始

c# - asp.net - C# 应用程序 - sql server 的正确参数化查询类

SQL Server : Cursor to CTE almost there

sql-server - 在 SSIS 中使用查询作为条件拆分表达式

vba - 使用 Excel VBA 将 Excel 文档上传到 Google Drive 上的共享文件夹?

vba - Excel VBA - 需要删除B列中填充引用错误的单元格值的行

java - 使用 Apache POI 修改现有 xlsx 电子表格会导致内容不可读错误