親/子テーブルにデータを挿入
次のジョブは、親テーブル Table1を使用して2つの子テーブルNameおよびBirthdayを生成するという複数テーブルの挿入を行う上級データベースユーザー専用です。
-
Access 2007で、Database1という名前のAccessデータベースを作成します。
-
Accessデータベースが作成されたら、2つのカラム見出しNameとBirthdayを持つTable1という名前のテーブルを作成します。
Talend Studio の Integration パースペクティブに、ジョブはtAccessConnection、tAccessCommit、tAccessInput、tAccessOutput、 tAccessCloseを含む12のコンポーネントを必要とします。
-
以下のコンポーネントを[Palette] (パレット)からデザインワークスペースにドロップします: tFileList、tFileInputDelimited、tMap、tAccessOutput (x2)、tAccessInput (x2)、tAccessCommit、tAccessClose、tLogRow (x2)。
-
[Iterate] (反復処理)リンクを使ってtFileListコンポーネントを入力ファイルコンポーネントに接続します。処理されるファイルの名前がグローバル変数を使用してtFileListディレクトリーから動的に入力されます。
-
tFileInputDelimitedコンポーネントをtMapコンポーネントに接続し、この2つの出力Accessコンポーネントの間にフローをディスパッチします。メインデータフローを表すこれらの各接続に、[Row] (行)リンクを使用します。
-
ファイルの取得元となるディレクトリーなど、tFileListコンポーネントのプロパティを設定するために使われます。
-
tAccessConnectionコンポーネントを追加し、それをこのジョブのスターターコンポーネントに接続します。この例では、tFileListコンポーネントは、OnComponentOkリンクを使用して実行順序を定義します。
-
tAccessConnectionコンポーネントビューで、接続の詳細を手動で設定するか、Metadata DB接続エントリーとして一元的に保存する場合は[Repository] (リポジトリー)から取得します。メタデータの詳細は、Talend Studioでメタデータを管理をご覧ください。
-
tFileInputDelimitedコンポーネントの[Basic settings] (基本設定)ビューで、 [Ctrl]+[Space]バーを押して変数リストにアクセスします。[File Name] (ファイル名)フィールドをグローバル変数tFileList_1.CURRENT_FILEPATHに設定します。変数の使い方は、ジョブまたはルートで変数を使用をご覧ください。
-
残りのフィールドを通常どおりに設定し、ファイルストラクチャーに基づいて行およびフィールドの区切りを定義します。
-
次に、[Edit schema] (スキーマを編集)ダイアログボックスを使用してスキーマを手動で設定するか、[Repository] (リポジトリー)からスキーマを選択します。処理するデータの性質に基づいて、データ型が正しく設定されていることを確認します。
-
tMap出力エリアで、2つの出力テーブルを追加します。1つはNameというテーブルをNameテーブルに、2番目はBirthdayというテーブルをBirthdayテーブルに追加します。tMapコンポーネントの詳細は、tMap操作をご覧ください。
-
[Input] (入力)エリアからNameカラムをドラッグし、Nameテーブルにドロップします。
-
[Input] (入力)エリアからBirthdayカラムをドラッグし、Birthdayテーブルにドロップします。
-
次に出力行リンクを接続して、関連するDB出力コンポーネントにフローを正しく配分するようにします。
-
各tAccessOutputコンポーネントの[Basic settings] (基本設定)ビューで、[Use an existing connection] (既存の接続を使用)チェックボックスをオンにして、tAccessConnectionの詳細を取得します。
-
正しいテーブルに対応するように[Table] (テーブル)名を設定するために使われます。この例ではNameまたはBirthdayのいずれかになります。
-
[Action on table] (テーブルでのアクション)ドロップダウンリストからDefaultを選択します。これは、テーブルが既に存在し、テーブルに対して操作が必要ないためです。
-
両方の出力コンポーネントのデータに対して[Action on data] (データでのアクション)として[Insert] (挿入)を選択します。
-
[Sync columns] (カラムを同期)をクリックして、tMapのスキーマセットを取得します。
-
次に、OnComponentOkリンクを使用して最初のtAccessOutputコンポーネントを最初のtAccessInputコンポーネントに接続します。
-
各tAccessInputコンポーネントの[Basic settings] (基本設定)ビューで、[Use an existing connection] (既存の接続を使用)チェックボックスをオンにして、配分されたデータフローを取得します。次に、[Edit schema] (スキーマを編集)ダイアログボックスを使用してスキーマを手動で設定します。
-
それに応じて[Table Name] (テーブル名)を設定するために使われます。tAccessInput_1では、これはNameになります。
-
[Guess Query] (クエリーを推測)をクリックします。
-
[Row] (行) > [Main] (メイン)リンクを使用して、各tAccessInputコンポーネントをtLogRowコンポーネントに接続します。各tLogRowコンポーネントの[basic settings] (基本設定)ビューで、[Mode] (モード)フィールドの[Table] (テーブル)を選択します。
-
トランザクションコミットでジョブを終了するために、 デザインワークスペースのtFileListコンポーネントの下にtAccessCommitコンポーネントを追加し、OnComponentOkリンクを使用してそれらを相互に接続します。
-
tAccessCommitコンポーネントの[basic settings] (基本設定)ビューで、[Component list] (コンポーネントリスト)から使用する接続を選択します。このシナリオではtAccessConnection_1です。
-
ジョブを保存し、[F6]を押して実行します。
NameテーブルとBirthdayテーブルを生成するために、親テーブルTable1が再利用されます。