2

DB内のすべてのテーブルをExcelファイルにエクスポートしたい。DB内のテーブルは異なる場合があるため、プロセスは動的である必要があります。

現在のプロセスでは、次のようにSSISを使用しています。

  1. 文字列を生成しCREATE TABLEます。
  2. その文字列をExecute Sql、Excelファイルを作成するExcelCMのタスクで使用します。
  3. INSERT INTO OPENROWSET... SELECT FROM ...コマンド文字列を生成します。
  4. この文字列は、SQLSERVERCMを使用するExecute Sqlタスクで使用します。

問題は、作成されたExcelファイルの列タイプがすべて「一般的」であるということです。

CREATE TABLEスクリプトの例:

CREATE TABLE `CONTACT1`
(
    [ACCOUNTNO] LongText,
    [COMPANY]   LongText,
    [CREATEON]  datetime,
    [CREATEAT]  LongText,
)

データ型で「遊ぶ」ことは役に立ちません。たとえば、などVARCHAR(1000)の代わりに使用します。LongText

xlsxxlsファイルの両方を生成してみました。

この問題により、後で*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
4

1 に答える 1

1

おそらくこれらのリンクが役立つでしょう(一般的に、実際の解決策はなく、むしろ回避策があるようです)

于 2012-12-12T14:52:11.763 に答える