Write to DB

Write to DB ステージでは、データフローの出力をデータベースに書き込みます。

注: Write to DB の複数の実行時インスタンスを使用することで、パフォーマンスを大きく改善できます。複数の実行時インスタンスを指定するには、[実行時] ボタンをクリックします。

[全般] タブ

オプション名

説明

接続

[接続] フィールドで、使用するデータベースへの接続を選択します。新しいデータベース接続を作成するには、[管理] をクリックします。データベース接続の作成の詳細については、Database Connection Manager を参照してください。

テーブル/ビュー

接続を選択した後、出力先のテーブルまたはビューを指定します。参照ボタン ([...]) をクリックして使用するテーブルまたはビューに移動するか、[テーブルの作成] をクリックしてデータベースに新しいテーブルを作成します。

注: SQL データベースに出力する場合は、複数のテーブルを参照するビューには出力できません。これは SQL Server の制限によります。

テーブルの作成

選択したデータベースに新しいテーブルを作成します。[テーブルの所有者] フィールドでテーブルの所有者を選択し、[テーブル名] フィールドで新しいテーブルの名前を指定します。テーブル名は大文字と小文字を区別します。[プライマリ キー] 列のチェックボックスをオンにして、プライマリ キーを指定します。また、[含める] 列のボックスをオンにして、新しいテーブルを出力先とするフィールドを指定します。[] 列は文字列データ タイプのフィールドの長さを指定します。デフォルトでは 512 です。[Null を許可] 列のチェックボックスがオンで [入力フィールド] に NULL 値が含まれている場合、データフローはデータベースに NULL 値を書き込みます。[出力フィールド] 列の値を変更することによって、列名を編集できます。

[テーブルの作成] ボタンは、次のデータベースでのテーブル作成をサポートしています。

  • Axion
  • DB2
  • Derby/Cloudscape
  • Firebird
  • HSQLDB
  • Interbase
  • MaxDB/SapDB
  • McKoi
  • MySQL
  • Oracle
  • PostgreSQL
  • SQL Server
  • Sybase
注: DB2 データベースでは、テーブルを作成しようとして、ページ サイズがすべての文字列の列の長さの合計より小さい場合、"コンテンツから本体を作成できません。シリアル化可能クラスはブローカに使用できません" というエラーが表示されます。

ステージ フィールド

[ステージ フィールド] 列で、[データベース フィールド] 列に表示されるデータベース フィールドを出力先とするフィールドを指定できます。

含める

[含める] 列で出力先のフィールドを選択できます。

注: パフォーマンスが低下するのを防ぐため、データベース テーブルにはソートされたインデックスまたはキーが必要です。
注: Write to DB ステージは、date データタイプのすべての値をString 値として書き出します。これは、Spectrum で使用されるデフォルト ドライバである jTDS ドライバの動作です。すべての dateデータタイプの値をそのまま処理するには、Microsoft の JDBC ドライバを使用します。

Database Connection Manager

Database Connection Manager を使用すると、登録されているデータベース接続を管理できます。接続を追加、変更、削除、およびテストするには:

  1. [Write To DB オプション] ダイアログ ボックスで、[管理] をクリックします。
  2. [追加][変更]、または [削除] をクリックします。
  3. データベース接続を追加または変更する場合は、次のフィールドに必要な値を指定します。
    • 接続名 — 新しい接続の名前を入力します。
    • データベース ドライバ — 適切なデータベースの種類を選択します。
    • 接続オプション — すべてのオプション (通常はホスト、ポート、インスタンス、ユーザ名、およびパスワード) を指定します。
    注: 接続をテストするには、[テスト] をクリックします。
  4. データベース接続を削除する場合は、削除する接続を選択し、[削除] をクリックします。

[実行時] タブ

オプション名

説明

書き込みモード

データベース書き込みのアクションの種類を指定します。次のいずれかです。

挿入
新しいレコードをデータベースに挿入します。既存のレコードは更新しません。これがデフォルト設定です。
更新
データベース内の既存のレコードを更新します。新しいレコードは挿入しません。
注: [更新] を選択する場合は、入力テーブルで使用されているプライマリ キー列の名前が、出力テーブルでのプライマリ キー列の名前と一致している必要があります。プライマリ キー列の名前が入力と一致していないテーブル、またはプライマリ キー列が定義されていないテーブルを更新しようとした場合、更新は行われません。
更新できない場合は挿入
該当レコードが存在しない場合は、新しいレコードをデータベースに挿入し、存在する場合は既存のレコードを更新します。

一括確定

このオプションをオンにすると、所定の数のレコードが処理されたとき、データベースへの変更が確定されます。デフォルトでは、このオプションはオフになっていて、1 レコード処理されるごとに変更が確定されます。このオプションをオンにすると、Write to DB ステージのパフォーマンスが大きく向上します。

バッチ サイズ

[一括確定] オプションをオンにする場合、データベースに対して一括で確定するときのレコード数を指定します。デフォルト値は 1,000 です。7.0 およびそれ以前の Spectrum™ Technology Platformで作成されたデータフローの場合、デフォルト値は 100 です。

バッチ サイズを大きくしてもロード パフォーマンスは必ずしも改善しません。バッチ サイズの設定に当たっては、次の要因を検討してください。

  • Write To DB ステージへのデータ到着速度: データの到着速度がデータベースの処理速度よりも遅い場合は、バッチ サイズを変更してもデータフローの全般的なパフォーマンスは改善しません。例えば、データフローで住所検証またはジオコーディングが行われている場合は、バッチ サイズを大きくしても効果が得られないことがあります。
  • ネットワーク トラフィック: 低速のネットワークでは、バッチ サイズを中程度 (1,000 ~ 10,000) まで大きくすると、パフォーマンスが改善します。
  • データベースの負荷や処理速度: データベースの処理能力が高い場合は、バッチ サイズを大きくすると、パフォーマンスが改善します。
  • 複数の実行時インスタンス: Write to DB の複数の実行時インスタンスを使用している場合、バッチ サイズを大きくすると大量のメモリが消費されるので、小または中程度のバッチ サイズ (100 ~ 10,000) を使用してください。
  • データベース ロールバック: いずれかの文が失敗すると、バッチ全体がロールバックされます。バッチ サイズを大きくすると、ロールバックの実行時間が長くなります。
最終確定 このオプションを選択すると、すべてのレコードがデータベースに転送された後、データベース操作が確定されます。
一括確定数 一定のレコード数ごとに確定を行うための値を指定します。データベースに対するレコードの確定は、(一括確定数 * バッチ サイズ) に相当する数のレコードがデータベースに転送されるたびに行われます。例えば、[バッチ サイズ] が 1000、[一括確定数] が 3 の場合、3000 レコードがデータベースに転送されるたびに確定が行われます。

データを挿入する前にテーブルを切り捨てる

このオプションをオンにすると、データベースへの書き込みの前にテーブル内のデータがすべてクリアされます。

テーブルが既に存在する場合は破棄して作成し直す

このオプションをオンにすると、データフローの出力をテーブルに書き込む前にテーブルを削除して作成し直します。このオプションは、テーブルのスキーマをデータフローからのフィールドに一致させ、余分なスキーマ情報を含まないようにしたい場合に便利です。

削除して作成し直すテーブルは、[全般] タブの [テーブル/ビュー] フィールドで指定されたものです。例えば、[テーブル/ビュー] フィールドで "Customers" テーブルを指定し、[テーブルが既に存在する場合は破棄して作成し直す] を選択した場合、"Customers" テーブルはデータベースから削除され、テーブルに書き込まれる実際のフィールドに一致するスキーマを持つ "Customers" という名前の新しいテーブルが作成されます。