我想创建导出到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','');
但是我收到了这个错误:
Msg 257,Level 16,State 3,Line 2
不允许从数据类型varchar到varbinary的隐式转换 使用CONVERT函数运行此查询。
请告诉我为什么我有错误以及如何正确编写此代码?
答案 0 :(得分: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显式提供值 - 看起来它应该可以工作。
祝你好运。