4

私は次のステートメントでExcelに正常にエクスポートしています:

insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
'Excel 8.0;Database=C:\template.xls;', 
'SELECT * FROM [SheetName$]') 
select * from myTable

テンプレートが書き込まれないように、Excelシートの新しい名前を指定してこのテンプレートを使用する標準的な方法はありますか、それとも回避策を考え出す必要がありますか?

人々の経験でこれを行うための最良の方法は何ですか?

4

3 に答える 3

7

動的 SQL を使用する必要があります。OPENROWSETetc は、パラメーターとしてリテラルのみを許可します。

DECLARE @myfile varchar(800)

SET @myfile = 'C:\template.xls'

EXEC ('
insert into OPENROWSET(''Microsoft.Jet.OLEDB.4.0'', 
''Excel 8.0;Database=' + @myfile + ';'', 
''SELECT * FROM [SheetName$]'') 
select * from myTable
')

注意: パスは、SQL Server が実行されている場所からの相対パスです。

于 2009-05-26T11:25:52.570 に答える
1

最初にテンプレートのコピーを作成してから、コピーのファイル名を OPENROWSET に渡すことはできませんか?

于 2009-11-28T00:59:31.563 に答える