0

インポートを担当するファイル名を追跡するためのテーブルと列を作成するスクリプトがあります。

select *, 'file1.xls' as 'Filename'
into dbo.SQLServerTable 
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=D:\testing.xls;HDR=YES','SELECT * FROM [Sheet1$]')

次に、異なるファイル名を持つ追加のインポートを実行する必要があります。このステートメントが構文的に正しいとは思わず、インポートを妨げています。

INSERT INTO dbo.SQLServerTable 
Select *, 'File2.xlsx' as 'FileName' 
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel      12.0;Database=D:\Convert\Converted\File2.xlsx;HDR=YES', 'SELECT * FROM [Worksheet$]')
4

1 に答える 1

1

この問題が発生したのは、デフォルトのテーブル値が原因です。文字列値の場合、これはたとえばvarchar(50)であり、varchar(120)が必要でした。

私の解決策は、Excelをcsvファイルに配置し(標準のExcelで保存)、SQLのインポート/エクスポートUIを使用してファイルをテーブルにインポートすることでした。このプロセス中に、すべてのデフォルト値を確認し、[詳細設定]タブを使用して、これらの値を独自の設定に変更できます。

于 2013-01-08T13:38:54.623 に答える