我有一个Excel表,它有47列和14K行。我使用OPENROWSET
:将此数据导入SQL Server
INSERT INTO dbo.my_table
SELECT * FROM OPENROWSET
(
'Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;HDR=Yes;Database=C:ExcelFile.xlsx',
'SELECT * FROM [Sheet1$]'
);
但是,只导入了5138行。一段时间后,导入的行数减少到5052,即每次都有不同的行数。但是,当我使用Tasks -> Import Data...
时,所有行都会成功导入。这种行为的原因是什么?
我使用的是SQL Server 2017 14.0.3356.2。
SQL Server代码的语法与文档中的示例代码略有不同。为了完全符合文档中代码的语法,它应该看起来像这个
INSERT INTO dbo.my_table
SELECT * FROM OPENROWSET
(
'Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;HDR=Yes;Database=C:ExcelFile.xlsx',
[Sheet1$]
);
工作表的名称[Sheet1$]不再位于引号内,并且类似SQL的代码("SELECT*FROM"(被删除。
另一个可能的问题可能是指定HDR=Yes。有行的每一列是否都有一个没有空格和/或不寻常格式的标题?如果需要的话,这是需要考虑的。