0

SQL テーブルに読み込む必要がある CSV を取得します。今はウェブアプリで手動でアップロードしていますが、これをSQLサーバーに移したいと思っています。インポート スクリプトをそのまま SSIS のスクリプトに移植するのではなく、それを行うためのより良い方法があるかどうかを確認したかったのです。

この特定の CSV の問題は、最初の数列が既知であり、適切なヘッダーがあることです。ただし、そのグループの後、残りの列はまばらに入力され、ヘッダーさえない場合があります。

例:

Col1,Col2,Col3,,,,,,
value1,value2,value3,,value4
value1,value2,value3,value4,value5
value1,value2,value3,,value4,value5
value1,value2,value3,,,value4

これを許容できるのは、Col3 の後のすべてを連結できることです。スクリプトは、これらの末尾の列の各行をチェックし、それらを「その他」の列にまとめます。これらの列がいくつ存在するかを事前に知る方法がないため、これは少し盲目的な方法で行う必要があります。

SSIS ツールでこれを行う方法はありますか、それとも既存のインポート スクリプトを SSIS スクリプト タスクに移植する必要がありますか?

4

2 に答える 2

0

ステップ 0. 追加の行を含むテスト ファイル

Col1,Col2,Col3,,,,,,
value1,value2,value3,,value4
value1,value2,value3,value4,value5
value1,value2,value3,,value4,value5
value1,value2,value3,,,value4
ends,with,comma,,,value4,
  1. 制御フロー サーフェス上で DFT をドラッグします
  2. DFT 内のデータ フロー サーフェスで、フラット ファイル ソースをドラッグします。
  3. まず、単独でマップしてみましょう。最初のデータ行の列名を確認します。
  4. 既知のフィールドである Col1、Col2、Col3 が表示されます。
  5. 列 3 から列 8 も表示されます。これらは、1 つのその他の列にまとめる必要がある列です。

  6. フラット ファイル マネージャー エディターの [詳細] セクションに移動します。

  7. 列 3 の名前を Misc に変更します。フィールド サイズを 4000 に設定します。

    注: それよりも長い場合は、テキスト データ型を使用する必要があります。それはいくつかの挑戦をもたらすので、楽しみの準備をしてください;-)

  8. 列 4 ~ 8 を削除します。次に、スクリプト コンポーネントを追加します。入力列 - その他のフィールドのみを選択します。使用タイプ: 読み書き コード:

public override void Input0_ProcessInputRow(Input0Buffer Row)

    {
        string sMisc = Row.Misc;


        string sManipulated = string.Empty;
        string temp = string.Empty;

        string[] values = sMisc.Split(',');

        foreach (string value in values)
        {
            temp = value;

            if (temp.Trim().Equals(string.Empty))
            {
                temp = "NA";
            }

            sManipulated = string.Format("{0},{1}", sManipulated, temp);
        }

        Row.Misc = sManipulated.Substring(1); 
    }

- 行き先。いつもと何も変わらない。

あなたの問題を理解し、解決策がうまくいくことを願っています。

于 2013-02-02T04:52:42.903 に答える
0

SSIS 以外の別のオプションは、フォーマット ファイルで BulkInsert を使用することです。

フォーマット ファイルを使用すると、受信データのフォーマットを記述できます。

例えば..

9.0
4
1       SQLCHAR       0       100     ","      1     Header1      SQL_Latin1_General_CP1_CI_AS
2       SQLCHAR       0       100     ","      2     Header2      SQL_Latin1_General_CP1_CI_AS
3       SQLCHAR       0       100     ","      3     Header3      SQL_Latin1_General_CP1_CI_AS
4       SQLCHAR       0       100     "\r\n"   4     Misc         SQL_Latin1_General_CP1_CI_AS

一括挿入>> http://msdn.microsoft.com/en-us/library/ms188365.aspx

フォーマット ファイル >> http://msdn.microsoft.com/en-us/library/ms178129.aspx

于 2013-02-02T01:10:06.343 に答える