0

我想创建导出到 Excel 文件。

为此,我使用以下代码:

INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0', 
'Excel 8.0;Database=C:\Temp\65343\file.xls;',
'SELECT group,subgroup,name_product,manufacture,unit,
retail_price,wholesale_price,info FROM [ExportSheet$]') 
VALUES 
('name','name','name','name','name','0.00','0.00',''),
('name','name','name','name','name','0.00','0.00','');

但我得到这个错误:

消息 257,级别 16,状态 3,行 2
不允许从数据类型 varchar 到 varbinary 的隐式转换。
使用 CONVERT 函数运行此查询。

请告诉我为什么我有错误以及如何正确编写此代码?

4

1 回答 1

0

你的语法对我来说是正确的,所以我有一些观察。

该错误通常意味着您遇到了数据类型转换问题 - 在这种情况下,您的 excel 文件中的一个字段看起来需要一个 varbinary 字段,但正在接收一个 varchar 字段。

如果您将字段限制为一个,例如组,它是否有效?如果是这样,您可以找出哪个领域是罪魁祸首。

或者,您可以使用临时表而不是使用 VALUES 子句:

INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0', 
'Excel 8.0;Database=C:\Temp\65343\file.xls;',
'SELECT group,subgroup,name_product,manufacture,unit,
retail_price,wholesale_price,info FROM [ExportSheet$]') 
SELECT group,subgroup,name_product,manufacture,unit,
retail_price,wholesale_price,info FROM YourTempTable;

不确定这是否会有所帮助,但我从未使用过 INSERT INTO OPENROWSET 明确提供值 - 似乎它应该可以工作。

祝你好运。

于 2013-01-28T00:40:02.403 回答