Write to DB

Write to DB ステージでは、データフローの出力をデータベースに書き込みます。ステージは、date データタイプのすべての値を String 値として書き出します。これは、Spectrum で使用されるデフォルト ドライバである jTDS ドライバの動作です。すべての date データタイプの値をそのまま処理するには、Microsoft の JDBC ドライバを使用します。

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

[全般] タブ を設定する

  1. [接続] ドロップダウン リストから、使用するデータベースへの接続を選択します。
  2. 新しいデータベース接続を作成するには、[管理] をクリックします。データベース接続の作成の詳細については、「Database Connection Manager」を参照してください。
    注: このオプションは Enterprise Designer によってのみ使用できます。
  3. データベースからテーブルまたはビューを選択するには、参照ボタン をクリックして、使用するテーブルまたはビューに移動します。

    テーブルを参照して選択すると、[データベース フィールド][ステージ フィールド][データ タイプ] などの [テーブル スキーマ] が表示されます。テーブルの [プレビュー] も使用可能です。

    注: SQL データベースに出力する場合は、複数のテーブルを参照するビューには出力できません。これは SQL Server の制限によります。
  4. データベースに新しいテーブルを作成するには、[テーブルの作成] をクリックし、表示されるポップアップで [テーブルの所有者] を選択し、[テーブル名] を指定します。
    注: テーブル名は大文字と小文字を区別します。
    注: Write to DB ステージに関連付けられた入力ステージ (Read from FileRead from DB など) がない場合、次のようなエラー メッセージが表示されます: テーブル スキーマが定義されていないと、テーブルを作成できません。このステージに上流フィールドが定義されていることを確認してください。
  5. テーブル スキーマで、以下の詳細を指定します。
    1. 対応する [プライマリ キー] のチェックボックスをオンにして、プライマリ キーを指定します。
    2. [含める] のチェックボックスをオンにして、新しいテーブルを出力先とするフィールドを指定します。
    3. 文字列のデータ タイプの場合は、[太さ] 列でフィールドの長さを指定します。
      注: デフォルトは 512 です。
    4. [Null を許可] 列のチェックボックスがオンで [入力フィールド] に NULL 値が含まれている場合、データフローはデータベースに NULL 値を書き込みます。
    5. 対応する[出力フィールド] の値を変更することによって、列名を編集できます。

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

    • Axion
    • DB2
    • Derby または Cloudscape
    • Firebird
    • HSQLDB
    • Interbase
    • MaxDB または SapDB
    • McKoi
    • MySQL
    • Oracle
    • PostgreSQL
    • SQL Server
    • Sybase
    注: DB2 データベースでは、テーブルを作成しようとして、ページ サイズがすべての文字列の列の長さの合計より小さい場合、"コンテンツから本体を作成できません。シリアル化可能クラスはブローカに使用できません" というエラーが表示されます。
  6. [OK] ボタンをクリックして [テーブルの作成] ポップアップを閉じ、[Write to DB オプション] に戻ります。
  7. [テーブル スキーマ][ステージ フィールド] 列で、データベースに書き込むフィールド名を、[データベース フィールド] 列に対応させる形で指定できます。
  8. [含める] のチェックボックスをオンにして、出力先のフィールドを選択します。
    注: パフォーマンスが低下するのを防ぐため、データベース テーブルにはソートされたインデックスまたはキーが必要です。

[実行時] タブの設定

オプション名

説明

書き込みモード

データベース書き込みのアクションを指定します。

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

一括確定

このオプションをオンにすると、所定の数のレコードが処理されたとき、データベースへの変更が確定されます。デフォルトでは、このオプションはオフになっていて、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" という名前の新しいテーブルが作成されます。