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ファイルのフィールドの1つがvarbinaryフィールドを予期しているように見えますが、代わりにvarcharフィールドを受け取っています。

たとえば、フィールドを1つだけに制限すると機能しますか?もしそうなら、あなたはどの分野が犯人であるかを理解することができます。

または、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;

これが役立つかどうかはわかりませんが、値を明示的に指定するINSERTINTOOPENROWSETを使用したことはありません。

幸運を。

于 2013-01-28T00:40:02.403 に答える