テーブル書き込み処理

オペレーション名

テーブル書き込み

機能概要

入力データをテーブルに書き込みます。

データモデル

本コンポーネントのデータモデルはテーブルモデル型です。

プロパティ

変数の使用については、「変数」を参照してください。
基本設定
項目名 必須/省略可 変数の使用 説明 備考
名前 必須 使用不可 スクリプトキャンバス上での名前を入力します。  
入力データ 必須 使用不可 スクリプトキャンバス上にあるコンポーネントを選択します。  
必須設定
項目名 必須/省略可 変数の使用 説明 備考
接続先 必須 使用不可 グローバルリソースを選択します。
  • [追加]:
    新規にグローバルリソースを追加します。
  • [一覧の編集]:
    「リソース一覧の編集」画面にて、グローバルリソースの設定を編集することができます。
 
テーブル名 必須 使用可 書き込むテーブルの名前を選択または入力します。
  • グローバルリソースの一覧設定で指定した制限数のテーブルが表示されます。
  • データベース上のスキーマ名やテーブル名に「.」が含まれる場合、スキーマ名とテーブル名を引用符で囲むと正しく扱うことができます。
    たとえば引用符が「"」の場合、スキーマ名が「A.B」で、テーブル名が「C.D」とすると、正しい引用符の囲み方は「"A.B"."C.D"」となります。
テーブル名を引用符で囲う 省略可 使用不可 指定したテーブル名を引用符で囲うかどうかを選択します。
  • [チェックあり]:
    [テーブル名]に表示されているテーブル名を引用符で囲います。
  • [チェックなし]:(デフォルト)
    [テーブル名]に表示されているテーブル名を引用符で囲いません。
スペースなどの文字がテーブル名に含まれていた場合には、テーブル名を引用符で囲う必要があります。 引用符で囲う必要がある文字については、各データベースベンダーに問い合わせてください。
  • 各データベースアダプタで設定されている引用符は以下の通りです。
    • OracleDB2PostgreSQLAmazon RDS for OracleAmazon RDS for PostgreSQL:「""」(二重引用符)
    • AccessSQL ServerAmazon RDS for SQL ServerAzure SQL Database:「[]」(半角大括弧)
    • MySQLAmazon RDS for MySQLAmazon Aurora for MySQL: 「``」(バッククォート)
  • JDBCアダプタODBCアダプタには本プロパティはありません。
  • 実行時には[テーブル名]に入力されたテーブル名をそのまま使用します。
    [テーブル名]に入力されたテーブル名が引用符で囲われていた場合には、実行時にも引用符で囲まれたテーブル名でクエリーを発行します。
    [テーブル名]に入力されたテーブル名が引用符で囲まれていない場合には、実行時に本プロパティの有効/無効を確認のうえ、本プロパティが有効であれば引用符で囲まれたテーブル名でクエリーを発行します。
  • [テーブル名]に環境変数を設定した場合、本プロパティの有効/無効を切り替えた際に値が展開されます。
キーの値と一致する行は更新 省略可 使用不可 キーとして指定した列の値が一致する行の更新を行うか、全件挿入を行うかを選択します。
  • [チェックあり]:
    キー値が一致する行は更新します。キー値が一致しない行は挿入します。
  • [チェックなし]:(デフォルト)
    全件挿入します。
  • [キーの値と一致する行は更新]にチェックを入れ、[スキーマ定義][キー]が指定されていない場合には、エラーが発生します。
    詳細については、「キーの値と一致する行は更新について」を参照してください。
スキーマ定義 必須 - [テーブル名]で指定したテーブルのスキーマ定義を表示します。
  • [スキーマ定義]で表示された列の中で、[書き込み対象]または[キー]にチェックを入れた列名がMapperのスキーマに表示されます。
  • 以下の場合はスキーマ定義を表示することはできません。
    • 指定したテーブルに読み取り権限がない場合
    • 指定したテーブルが存在しない場合
    • [テーブル名]に変数が指定されている場合
    • [テーブル名]が入力されていない場合
    • [テーブル名]でエラーが発生している場合
スキーマ定義/書き込み対象 省略可 使用不可 [テーブル名]で指定したテーブルの各列を、書き込み対象カラムに含めるかどうかを選択します。
  • [チェックあり]:(デフォルト)
    書き込み対象に含めます。
  • [チェックなし]:
    書き込み対象に含めません。
  • チェックを入れた列の列名がMapperのスキーマに表示されます。
  • ヘッダに表示されたチェックボックスを押下することで、一括操作を行うことができます。
  • 1つ以上の列にチェックが入っている必要があります。
  • 詳細については、「書き込み対象カラムについて」を参照してください。
スキーマ定義/キー 必須 使用不可 更新条件に含めるキーを選択します。
  • [チェックあり]:
    更新条件に含めます。
  • [チェックなし]:(デフォルト)
    更新条件に含めません。
  • [キーの値と一致する行は更新]にチェックを入れた場合、有効になります。
  • チェックを入れた列の列名がMapperのスキーマに表示されます。
  • [キーの値と一致する行は更新]にチェックを入れ、[スキーマ定義][キー]が指定されていない場合には、エラーが発生します。
    詳細については、「キーの値と一致する行は更新について」を参照してください。
スキーマ定義/列名 必須 使用不可 [テーブル名]で指定したテーブルの列名を表示します。  
スキーマ定義/型 必須 使用不可 [列名]の型を表示します。
  • 「<Native型> (<内部データ型>)」形式で表示されます。
    • Native型:
      各RDBMSの固有のデータ型です。
    • 内部データ型:
      DataSpider内部で使用しているデータ型です。
      詳細については、「内部データ型」を参照してください。
プロパティアクション
項目名 説明 備考
テーブルブラウザの起動 テーブルブラウザを起動します。
操作方法については、「テーブルブラウザ」を参照してください。
  • [接続先]が選択されている場合、有効になります。
  • [テーブル名]で指定したテーブルが初期表示されます。
スキーマ定義の更新 [テーブル名]で指定したテーブルのスキーマ定義を更新します。
  • 以下の場合には実行することができません。
    • 指定したテーブルが存在しない場合
    • [テーブル名]に変数が指定されている場合
    • [テーブル名]が入力されていない場合
    • [テーブル名]でエラーが発生している場合
書き込み設定
項目名 必須/省略可 変数の使用 説明 備考
インサートモード 省略可 使用不可 データを全件挿入する場合の書き込み方式を選択します。
  • [1行インサート]:
    入力データの1行ごとにSQL文を実行します。
  • [バッチインサート]:(デフォルト)
    [バッチサイズ]に指定した行数ごとにバッチ更新します。
  • 以下のアダプタではデフォルト値は[1行インサート]です。
    • JDBCアダプタ
    • ODBCアダプタ
  • [キーの値と一致する行は更新]にチェックを入れた場合、表示されません。
  • 書き込む列の型にバッチ更新をサポートしない型が含まれている場合、[1行インサート]で実行します。
    バッチ更新をサポートしない型については、「データベースアダプタの制限事項」を参照してください。
  • バッチ更新とは、複数行のデータを一度にデータベースに送信し、SQL文を実行する機能です。
アップデートモード 省略可 使用不可 データを更新する場合の書き込み方式を選択します。
  • [アップデート・インサート]:(デフォルト)
    1行ごとにUPDATE文を実行し、キーの値と一致する行が存在しない場合はINSERT文を実行します。
  • [インサート・アップデート]:
    1行ごとにINSERT文を実行し、キーの値と一致する行が存在する場合はUPDATE文を実行します。
  • [バッチアップデート・インサート]:
    [バッチサイズ]で指定した件数ごとにUPDATE文をバッチ更新し、キーの値と一致する行が存在しない場合はINSERT文をバッチ更新します。
  • [キーの値と一致する行は更新]にチェックを入れた場合、表示されます。
  • [アップデート・インサート][インサート・アップデート]の違いについては、「「アップデート・インサート」と「インサート・アップデート」の違いについて」を参照してください。
  • データベースによっては使用できないアップデートモードがあります。使用できないアップデートモードについては、「データベースアダプタの制限事項」を参照してください。
  • 書き込む列の型にバッチ更新をサポートしない型が含まれている場合、[アップデート・インサート]で実行します。
    バッチ更新をサポートしない型については、「データベースアダプタの制限事項」を参照してください。
  • [インサート・アップデート]を指定した場合、[スキーマ定義/キー]で選択したカラムに、一意性制約が設定されている必要があります。
    一意性制約が設定されていない場合は、[アップデート・インサート]または[バッチアップデート・インサート]を指定して実行してください。
  • [バッチアップデート・インサート]を指定し、以下の2つの条件を満たす場合、キーが重複するデータが複数挿入される場合があります。
    • 入力データに、同じキーを持つ行が複数存在する
    • 書き込むテーブルに、当該キーのデータが存在しない
バッチサイズ 省略可 使用可 バッチ更新するSQL文の件数を指定します。
  • [インサートモード][バッチインサート]を選択した場合および、[アップデートモード][バッチアップデート・インサート]を選択した場合、有効になります。
  • デフォルト値は「1000」で、省略した場合は「1000」が設定されます。
  • 入力できる値は「1〜2147483647」です。
クエリタイムアウトを有効にする 必須 使用不可 クエリタイムアウトを有効にするかどうかを選択します。
  • [チェックあり]:
    クエリタイムアウトを設定します。
  • [チェックなし]:(デフォルト)
    クエリタイムアウトを設定しません。
  • [チェックなし]とした場合、JDBCドライバのクエリタイムアウトを指定しない場合の動作にしたがいます。
  • 以下のアダプタには本プロパティはありません。
    • Accessアダプタ
クエリタイムアウト(秒) 必須 使用可 クエリタイムアウトを設定します。
  • [クエリタイムアウトを有効にする][チェックあり]とした場合、有効になります。
  • 入力できる値は「0〜2147483647」です。
  • 本プロパティで入力した値は、JDBCのsetQueryTimeout()メソッドの引数に指定されます。
  • 一般的に、クエリタイムアウトは実行を待つ秒数を設定しますが、データベースや使用するJDBCドライバによって動作が異なる場合があります。
  • 以下のアダプタには本プロパティはありません。
    • Accessアダプタ
コメント
項目名 必須/省略可 変数の使用 説明 備考
コメント 省略可 使用不可 このアダプタの簡単な説明を記述することができます。
説明を記述すると、仕様書に反映させることができます。
 

スキーマ

入力スキーマ

[スキーマ定義]の設定により、カラム数が異なります。
スキーマ構造については、「テーブルモデル型のスキーマ」を参照してください。

出力スキーマ

ありません。

Mapperでのスキーマ読み込み

スキーマは自動で読み込まれます。
詳細については、「スキーマ編集」を参照してください。

トランザクション

トランザクションをサポートしています。

PSPでの使用について

PSPで使用できます。
PSPについては、「パラレルストリーミング処理」を参照してください。

使用できるコンポーネント変数

コンポーネント変数名 説明 備考
count 書き込んだデータの件数が格納されます。
  • デフォルト値はnullです。
insert_count 書き込んだデータのうち、挿入したデータの件数が格納されます。
  • デフォルト値はnullです。
update_count 書き込んだデータのうち、更新したデータの件数が格納されます。
  • デフォルト値はnullです。
error_code エラー(SQLException)発生時、発生したエラーに対応するエラーコードが格納されます。
  • デフォルト値はnullです。
  • 正常終了時は「0」が格納されます。
  • エラーコードは各ドライバの仕様に基づいています。
message_category エラー発生時、発生したエラーに対応するメッセージコードのカテゴリが格納されます。
  • デフォルト値はnullです。
message_code エラー発生時、発生したエラーに対応するメッセージコードのコードが格納されます。
  • デフォルト値はnullです。
message_level エラー発生時、発生したエラーに対応するメッセージコードの重要度が格納されます。
  • デフォルト値はnullです。
error_type エラー発生時、発生したエラーの種類が格納されます。
  • デフォルト値はnullです。
  • エラーの種類は、以下のような形式となります。
    例:「java.io.FileNotFoundException」
  • DataSpider Servistaのバージョンにより、格納される内容が変わる可能性があります。
error_message エラー発生時、発生したエラーのメッセージが格納されます。
  • デフォルト値はnullです。
  • DataSpider Servistaのバージョンにより、格納される内容が変わる可能性があります。
error_trace エラー発生時、発生したエラーのトレース情報が格納されます。
  • デフォルト値はnullです。
  • DataSpider Servistaのバージョンや実行するクライアントアプリケーションにより、格納される内容が変わる可能性があります。

キーの値と一致する行は更新について

テーブル書き込み処理で更新を行う場合には、[キーの値と一致する行は更新]にチェックを入れ、キーとなる[列名]を選択します。 キーとして選択した列が一致した行を更新し、一致しない行を挿入します。キーとして選択した列名がUPDATE文のWHERE句に指定されます。

Insert/Update

書き込み対象カラムについて

挿入時の動作

挿入時、[スキーマ定義/書き込み対象]にチェックを入れたカラムがINSERT文の挿入対象のカラムとして使用されます。
書き込み対象に含めないカラムに挿入される値は、データベースの仕様やカラムの制約や設定に依存します。
NOT NULL制約のあるカラムを書き込み対象に含めない場合、実行時にエラーとなります。

例:

更新時の動作

更新時、[スキーマ定義/書き込み対象]にチェックを入れたカラムがUPDATE文の更新対象のカラムとして使用されます。
書き込み対象に含めないカラムの値は、更新は行われずにそのまま維持されます。

例:

「アップデート・インサート」と「インサート・アップデート」の違いについて

エラーログについて

バッチ更新時にエラーが発生した場合、エラーに関連する情報がダンプファイル内にエラーログとして出力されます。

出力先

$DATASPIDER_HOME/server/logs/<日付ディレクトリ>/execution/<実行IDディレクトリ>/dump.xml

出力内容

以下の情報をfailureResults要素に出力します。
result要素のkey属性値 説明
dump_error_message エラー発生時のダンプ情報を出力します。
  • [SQL]:
    エラー発生時に実行したSQL文です。
  • [Error Records Range]:
    入力データでエラーになった箇所の開始行番号と終了行番号です。
  • [Batch Insert Count]:
    バッチ更新に成功したデータ数です。
  • [Batch Size]:
    バッチサイズです。
  • [Error Records]:
    エラー発生時にバッチ更新で用いられたデータを出力します。入力データのError Records Range分が出力されます。
error_code SQL例外(SQLException)が発生した場合のエラーコードです。

仕様制限

各データベースアダプタ固有の仕様制限については、「データベースアダプタの制限事項」を参照してください。

主な例外

例外名 原因 対策
InputDataNotFoundException [入力データ]が指定されていません。 [入力データ]を指定する、またはデータフローを引いてください。
ResourceNotFoundException
リソース定義が見つかりませんでした。名前:[]
[接続先]が指定されていません。 [接続先]を指定してください。
ResourceNotFoundException
リソース定義が見つかりませんでした。名前:[<グローバルリソース名>]
[接続先]で選択されたリソース定義が見つかりません。 [接続先]で指定したグローバルリソースを確認してください。
InvalidPropertyConfigurationException [テーブル名]が未設定です。 [テーブル名]を指定してください。
InvalidPropertyConfigurationException
書き込み対象カラムが選択されていません。
[スキーマ定義][書き込み対象]が選択されていません。 [スキーマ定義][書き込み対象]を1つ以上選択してください。
java.sql.SQLException データベースアクセスエラーまたはそのほかのエラーが発生しています。 SQLExceptionのメッセージを確認してください。SQLExceptionのメッセージは各ドライバの仕様に基づいています。SQLExceptionのメッセージにはエラーの原因が出力されている場合があります。
メッセージの詳細については、各データベースベンダーに問い合わせてください。

注意事項

各データベースアダプタ固有の注意事項については、「データベースアダプタの制限事項」を参照してください。