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

Sql server 并非所有行都是使用SQL Server中的OPENROWSET从Excel文件导入的,sql-server,openrowset,aceoledb,Sql Server,Openrowset,Aceoledb,我有一个Excel表格,有47列和14K行。我使用OPENROWSET将此数据导入SQL Server: 插入到dbo.my_表中 从OPENROWSET中选择* ( 'Microsoft.ACE.OLEDB.12.0', “Excel 12.0;HDR=Yes;数据库=C:\ExcelFile.xlsx”, '从[Sheet1$]中选择* ); 但是,仅导入了5138行。一段时间后,导入的行数减少到5052,即每次-不同的行数。 但是,当我使用任务->导入数据…时,所有行都会成功导入。 这种

我有一个Excel表格,有47列和14K行。我使用
OPENROWSET
将此数据导入SQL Server:

插入到dbo.my_表中
从OPENROWSET中选择*
(
'Microsoft.ACE.OLEDB.12.0',
“Excel 12.0;HDR=Yes;数据库=C:\ExcelFile.xlsx”,
'从[Sheet1$]中选择*
);
但是,仅导入了5138行。一段时间后,导入的行数减少到5052,即每次-不同的行数。 但是,当我使用
任务->导入数据…
时,所有行都会成功导入。 这种行为的原因是什么


我使用的是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。是否有行的每一列都有一个没有空格和/或不寻常格式的标题?如果需要的话,这是一个值得考虑的问题。

是否有可能在你的扩展表(即空白行)的数据中有一个空缺?正如我所指出的,
导入数据
工作得很好。这意味着
OPENROWSET
也应该可以正常工作。@JohnyL如果您可以添加示例数据,就更容易理解您的问题。@droebi数据是敏感的,但我会尝试用伪值替换它。@SteveFord SteveC的回答成功了-问题在于语法,尽管还需要做一件事(请参阅我的评论)。无论如何,谢谢你的回答!谢谢回复!我要试试看!在一些测试之后,您的代码确实工作了,但是为了工作,我必须为
Microsoft.ACE.OLEDB.12.0
提供程序设置
AllowInProcess=1
DynamicParameters=1
。只有在成功导入所有行之后!非常感谢!:)我想,你需要在回答中提到设置这些参数。谢谢