如何解决并非所有行都是使用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 举报,一经查实,本站将立刻删除。