4

我有一个 47 列和 14K 行的 Excel 表。我将这些数据导入 SQL Server 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。

4

1 回答 1

1

SQL Server 代码的语法与Docs中的示例代码略有不同。为了完全符合文档中代码的语法,它应该看起来像这样

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。有/有任何行的每一列是否都有没有空格和/或不寻常格式的标题?如果需要,这是需要考虑的事情。

于 2020-10-13T13:39:33.307 回答