3

Talendで次の問題に取り組むための最善の戦略を知りたいです。

  • (SAMPLE1.DAT、SAMPLE2.DAT、...、SAMPLEX.DAT)のような名前のディレクトリに保存されている一連の区切りファイルからデータをロードする必要があります
  • ターゲットはMySQLデータベースのテーブルになります
  • このタスクの後、同じテーブル内のすべてのレコードを処理する必要があるため、すべてのデータを一度にロードする必要があります

Talendで可能かどうかわからないので、少し混乱しています。tFileInputDelimitedコンポーネントを見ていましたが、それを解決する方法が見つかりませんでした。

ありがとう

4

2 に答える 2

5

1つのディレクトリから複数のファイルを読み取るには、tFileListコンポーネントを使用します。ディレクトリとファイル名のパターンを指定できます。パターンに一致するディレクトリ内のすべてのファイルが次々に処理されます。

tFileListコンポーネントから、各ファイルで何をしたいかを説明するコンポーネントへの「反復」リンクを使用する必要があります。あなたの場合、tFileInputDelimitedコンポーネント(ファイルを読み取る)から始めて、そのメイン出力をtMysqlOutputコンポーネントに接続します。MySQLコンポーネントは、デフォルトでは、既存のテーブルにデータを追加するだけなので、希望する結果が得られるはずです。

tFileInputDelimitedコンポーネントでは、固定ファイル名ではなく、反復ごとにtFileListコンポーネントによって設定される可変ファイル名(いわばループ変数)を使用します。そのループ変数の名前は、スタジオの「アウトライン」ビュー(通常は左下隅)に表示されます。

于 2011-08-26T15:14:02.860 に答える
1

コンポーネントtFileInputDelimitedをtMap(オプション)にtmysqlOutputに使用します

ステップ1:区切られたファイル入力を使用することを除いて、次のようないくつかのコンポーネントを構成します。 ステップ1

ステップ2:区切られたファイルのコンポーネント設定を構成し、ウィザードのディスクをクリックします。ステップ2

ステップ3:メタデータの下のDb接続を右クリックし、ウィザードに従ってデータベースを構成します。ステップ3

ステップ4:各コンポーネントを右クリックし、[行]>[メイン]>[フローの次のステップにドラッグ]を選択します。

ステップ5: tMapを開き、ファイルスキーマからデータベーススキーマに列をマップします。

ステップ6:ジョブを実行します。すべてのウィザードを実行した場合は機能するはずです。エラーがある場合は、赤いコンポーネントにカーソルを合わせるだけで、通常はエラーが非常によく説明されます。ジョブが実行されると、転送されたレコードの数が表示されます。

ステップ7:これまでに作成した後tfiledelimited、入力と同じスキーマで出力を作成し、入力を右クリックして[行]> [拒否]を選択し、それを新しい区切り出力にドラッグします。これは、tmap送信されます。

于 2011-06-23T17:47:56.383 に答える