微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

并非所有行都是使用SQL Server中的OPENROWSET从Excel文件导入的

如何解决并非所有行都是使用SQL Server中的OPENROWSET从Excel文件导入的

我有一个包含47列和14K行的Excel表。我使用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代码的语法与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。是否有行的每一列的标题是否都没有空格和/或异常格式?如果需要,可以考虑一下。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。