DB内のすべてのテーブルをExcelファイルにエクスポートしたい。DB内のテーブルは異なる場合があるため、プロセスは動的である必要があります。
現在のプロセスでは、次のようにSSISを使用しています。
- 文字列を生成し
CREATE TABLE
ます。 - その文字列を
Execute Sql
、Excelファイルを作成するExcelCMのタスクで使用します。 INSERT INTO OPENROWSET... SELECT FROM ...
コマンド文字列を生成します。- この文字列は、SQLSERVERCMを使用する
Execute Sql
タスクで使用します。
問題は、作成されたExcelファイルの列タイプがすべて「一般的」であるということです。
CREATE TABLE
スクリプトの例:
CREATE TABLE `CONTACT1`
(
[ACCOUNTNO] LongText,
[COMPANY] LongText,
[CREATEON] datetime,
[CREATEAT] LongText,
)
データ型で「遊ぶ」ことは役に立ちません。たとえば、などVARCHAR(1000)
の代わりに使用します。LongText
xlsx
とxls
ファイルの両方を生成してみました。
この問題により、後で*INSERT INTO OPENROWSET(...) SELECT FROM ...*
コマンドを使用してデータを挿入できなくなります。INSERT INTO
スクリプトの例:
INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=c:\\junk \\accountnoWithNoApps.xlsx;HDR=YES;IMEX=1\"',
'SELECT [accountno], [COMPANY], [CREATEON], [CREATEAT] FROM [CONTACT1$]')
SELECT [accountno], [COMPANY], [CREATEON], [CREATEAT] FROM CONTACT1