2

テキスト ファイルから SQL にデータをインポートする際に問題が発生しています。方法がわからないからではありません...しかし、この目的のためにフォーマットがかなりひどいからです。以下は、作業する必要があるテキスト ファイルの種類の変更されたサンプルです。


1   VA -    P
2   VB to 1X    P
3   VC to 1Y    P
4   N - P
5   G to 1G,Frame   P
6   Fout to 1G,Frame    P
7   Open Breaker    P
8   1B to 1X    P
9   1C to 1Y    P

Test Status: Pass
Hi-Pot @ 1500V: Pass 
Customer Order:904177-F
Number: G4901626-200
Serial Number: J245F6-2D03856
Catalog #: CBDC37-X5LE30-H40-L630C-4GJ-G31
Operator: TGY
Date:  Aug 01, 2013
Start Time: 04:09:26
Finish Time: 04:09:33

最初の 9 行はすべて特定のテスト結果 (タブ区切り) で、その下にヘッダー情報があります。私の問題は、私が理解する必要があるということです:

  1. 上記のデータを取得して、標準の列形式に分解して SQL にインポートするにはどうすればよいですか?

  2. フォルダ構造全体をループできるように、これを自動化するにはどうすればよいですか? -上に表示されているのは、いくつかのサブディレクトリに分割された数百のファイルの 1 つです。

また、ヘッダー情報の上のテスト行の数はファイルごとに異なることに注意してください。ただし、ヘッダー情報はほとんど同じ形式のままです。これはすべて、再生成できないレガシー データですが、SQL データベースにインポートする必要があります。

カスタム スクリプトを使用して SSIS プロジェクトを使用してデータをインポートすることを考えています...最初の空の行を探して上部セクションを下部から接合します...次に、ヘッダーのデータを列形式にピボットします...マージ...次に進みます。しかし、私はあまり VB を書いていないので、どのようにアプローチすればよいかわかりません。

BIDS にアクセスできる SQL Server 2008R2 環境で作業しています。

考え?

4

4 に答える 4

2

まず、データをすべての文字として、1 行に 1 レコードの単一フィールドを持つテーブルにインポートします。次に、そのテーブルから、各レコードを各行に適したフィールドとフィールド タイプに解析できます。各行がどのような種類のデータであるか、各ファイルの順序が一貫しているかどうか、またはヘッダー レコードが後続の行に関する情報を示しているかどうかを判断する方法があることを願っています。そこから、データを必要に応じて使用できる形式で保存された最終的な (解析には複数のパスが必要になる場合があります) テーブルに移動できます。

于 2013-11-04T21:15:06.710 に答える
1

別のアプローチを使用し、SSDT/SSIS パッケージを使用してデータをインポートします。

  1. テキスト ファイルを読み取り、XML に変換するスクリプト コンポーネントを追加します。ウェブ上には多くの例があります。スクリプト内で、作成した XML を変数に格納します。
  2. データ フローを追加する
  3. XML ソースを追加します。XML ソースでは、作成した XML 変数を選択して、ファイルに存在するデータのいずれかのグループを処理できます。XML Source の使用に関する情報を次に示します。
  4. 宛先タスクを追加して、選択した宛先にインポートします
于 2013-11-05T01:35:22.130 に答える
0

このソリューションでは、入力行が通常の Windows の方法である {CR}{LF} で終了していると想定しています。
MSSQL のインポート/エクスポート ウィザードにフラット ファイルをインポートするように指示します。フォーマットは「区切り」です。「テキスト修飾子」は {CR} です。「ヘッダー行区切り文字」は {LF} です。また、OutputColumnWidth (「詳細」) は、可能な限り長い行の長さよりも少し長くなっています。
シンプルで機能します。

これを使用して、2,300 万行の混合データをインポートしましたが、10 分もかかりませんでした。今それを編集する...

于 2013-11-18T12:33:16.573 に答える