并非所有行都是使用 SQL 服务器中的 OPENROWSET 从 Excel 文件导入的
Not all rows are imported from Excel file using OPENROWSET in SQL Server
我有一个 Excel table 有 47 列和 14K 行。我使用 OPENROWSET
:
将此数据导入 SQL 服务器
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 服务器代码的语法与 Docs 中的示例代码略有不同。为了完全符合文档中代码的语法,它应该看起来像这样
INSERT INTO dbo.my_table
SELECT * FROM OPENROWSET
(
'Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;HDR=Yes;Database=C:\ExcelFile.xlsx',
[Sheet1$]
);
sheet [Sheet1$] 的名称不再包含在引号内,SQL-like 代码 ("SELECT * FROM ") 已被删除。
另一个可能的问题是指定 HDR=Yes。 is/are 任何行的每一列是否都有 header 没有空格 and/or 异常格式?如果需要,可以考虑。
我有一个 Excel table 有 47 列和 14K 行。我使用 OPENROWSET
:
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 服务器代码的语法与 Docs 中的示例代码略有不同。为了完全符合文档中代码的语法,它应该看起来像这样
INSERT INTO dbo.my_table
SELECT * FROM OPENROWSET
(
'Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;HDR=Yes;Database=C:\ExcelFile.xlsx',
[Sheet1$]
);
sheet [Sheet1$] 的名称不再包含在引号内,SQL-like 代码 ("SELECT * FROM ") 已被删除。
另一个可能的问题是指定 HDR=Yes。 is/are 任何行的每一列是否都有 header 没有空格 and/or 异常格式?如果需要,可以考虑。