テーブル書き込み処理

オペレーション名

テーブル書き込み

機能概要

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

データモデル

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

チュートリアル

MySQLデータベースへのコネクションの作成方法については、以下のチュートリアルを参照してください。

プロパティ

= 備考 =

変数の使用については、「変数」を参照してください。

基本設定

項目名

必須/省略可

変数の使用

説明

備考

名前

必須

使用不可

スクリプトキャンバス上での名前を入力します。

 

入力データ

必須

使用不可

スクリプトキャンバス上にあるコンポーネントを選択します。

 

必須設定

項目名

必須/省略可

変数の使用

説明

備考

接続先

必須

使用不可

コネクションリソースを選択します。

[追加]

新規にコネクションリソースを追加します。

[一覧の編集]

> HULFT INTEGRATE > コネクションで、コネクションリソースの設定を編集することができます。

 

テーブル名

必須

使用可

書き込むテーブルの名前を選択または入力します。

  • コネクションリソースの一覧設定で指定した制限数のテーブルが表示されます。

  • データベース上のスキーマ名やテーブル名に「.」が含まれる場合、スキーマ名とテーブル名を引用符で囲むと正しく扱うことができます。

    たとえば引用符が「"」の場合、スキーマ名が「A.B」で、テーブル名が「C.D」とすると、正しい引用符の囲み方は「"A.B"."C.D"」となります。

テーブル名を引用符で囲う

省略可

使用不可

指定したテーブル名を引用符で囲うかどうかを選択します。

[チェックあり]

[テーブル名]に表示されているテーブル名を引用符で囲います。

[チェックなし]

(デフォルト)

[テーブル名]に表示されているテーブル名を引用符で囲いません。

スペースなどの文字がテーブル名に含まれていた場合には、テーブル名を引用符で囲う必要があります。

引用符で囲う必要がある文字については、各データベースベンダーに問い合わせてください。

各データベースコネクターで設定されている引用符は以下のとおりです。

OracleDB2PostgreSQLAmazon RDS for OracleAmazon RDS for PostgreSQL

""」(二重引用符)

SQL ServerAmazon RDS for SQL ServerAzure SQL Database

[]」(半角大括弧)

MySQLAmazon RDS for MySQLAmazon Aurora for MySQL

``」(バッククォート)

注意
  • JDBCコネクターには本プロパティはありません。

  • 実行時には[テーブル名]に入力されたテーブル名をそのまま使用します。

    [テーブル名]に入力されたテーブル名が引用符で囲われていた場合には、実行時にも引用符で囲まれたテーブル名でクエリーを発行します。

    [テーブル名]に入力されたテーブル名が引用符で囲まれていない場合には、実行時に本プロパティのチェックあり/なしを確認のうえ、本プロパティがチェックありであれば引用符で囲まれたテーブル名でクエリーを発行します。

  • [テーブル名]に環境変数を設定した場合、本プロパティのチェックあり/なしを切り替えた際に値が展開されます。

キーの値と一致する行は更新

省略可

使用不可

キーとして指定した列の値が一致する行の更新を行うか、全件挿入を行うかを選択します。

[チェックあり]

キー値が一致する行は更新します。キー値が一致しない行は挿入します。

[チェックなし]

(デフォルト)

全件挿入します。

  • [キーの値と一致する行は更新]にチェックを入れ、[スキーマ定義][キー]が指定されていない場合には、エラーが発生します。

    詳細については、「キーの値と一致する行は更新について」を参照してください。

スキーマ定義

必須

-

[テーブル名]で指定したテーブルのスキーマ定義を表示します。

  • [スキーマ定義]で表示された列の中で、[書き込み対象]または[キー]にチェックを入れた列名がMapperのスキーマに表示されます。

  • 以下の場合はスキーマ定義を表示することはできません。

    • 指定したテーブルに読み取り権限がない場合

    • 指定したテーブルが存在しない場合

    • [テーブル名]に変数が指定されている場合

    • [テーブル名]が入力されていない場合

    • [テーブル名]でエラーが発生している場合

スキーマ定義/書き込み対象

省略可

使用不可

[テーブル名]で指定したテーブルの各列を、書き込み対象カラムに含めるかどうかを選択します。

[チェックあり]

(デフォルト)

書き込み対象に含めます。

[チェックなし]

書き込み対象に含めません。

  • チェックを入れた列の列名がMapperのスキーマに表示されます。

  • ヘッダに表示されたチェックボックスをクリックすることで、一括操作を行うことができます。

  • 詳細については、「書き込み対象カラムについて」を参照してください。

注意

1つ以上の列にチェックが入っている必要があります。

スキーマ定義/キー

必須

使用不可

更新条件に含めるキーを選択します。

[チェックあり]

更新条件に含めます。

[チェックなし]

(デフォルト)

更新条件に含めません。

  • [キーの値と一致する行は更新]にチェックを入れた場合、有効になります。

  • チェックを入れた列の列名がMapperのスキーマに表示されます。

  • [キーの値と一致する行は更新]にチェックを入れ、[スキーマ定義][キー]が指定されていない場合には、エラーが発生します。

    詳細については、「キーの値と一致する行は更新について」を参照してください。

スキーマ定義/列名

必須

使用不可

[テーブル名]で指定したテーブルの列名を表示します。

 

スキーマ定義/型

必須

使用不可

[列名]の型を表示します。

「<Native型> (<内部データ型>)」形式で表示されます。

Native型

各RDBMSの固有のデータ型です。

内部データ型

内部で使用しているデータ型です。

詳細については、「内部データ型」を参照してください。

プロパティアクション

項目名

説明

備考

テーブルブラウザの起動

テーブルブラウザを起動します。

操作方法については、「テーブルブラウザ」を参照してください。

  • [接続先]が選択されている場合、有効になります。

  • [テーブル名]で指定したテーブルが初期表示されます。

スキーマ定義の更新

[テーブル名]で指定したテーブルのスキーマ定義を更新します。

  • 以下の場合には実行することができません。

    • 指定したテーブルが存在しない場合

    • [テーブル名]に変数が指定されている場合

    • [テーブル名]が入力されていない場合

    • [テーブル名]でエラーが発生している場合

書き込み設定

項目名

必須/省略可

変数の使用

説明

備考

インサートモード

省略可

使用不可

データを全件挿入する場合の書き込み方式を選択します。

[1行インサート]

入力データの1行ごとにSQL文を実行します。

[バッチインサート]

(デフォルト)

[バッチサイズ]に指定した行数ごとにバッチ更新します。

  • [キーの値と一致する行は更新]にチェックを入れた場合、表示されません。

  • 書き込む列の型にバッチ更新をサポートしない型が含まれている場合、[1行インサート]で実行します。

    バッチ更新をサポートしない型については、各コネクターの「メッセージコード、例外メッセージ、制限事項」を参照してください。

  • バッチ更新とは、複数行のデータを一度にデータベースに送信し、SQL文を実行する機能です。

注意

JDBCコネクターではデフォルト値は[1行インサート]です。

アップデートモード

省略可

使用不可

データを更新する場合の書き込み方式を選択します。

[アップデート・インサート]

(デフォルト)

1行ごとにUPDATE文を実行し、キーの値と一致する行が存在しない場合はINSERT文を実行します。

[インサート・アップデート]

1行ごとにINSERT文を実行し、キーの値と一致する行が存在する場合はUPDATE文を実行します。

[バッチアップデート・インサート]

[バッチサイズ]で指定した件数ごとにUPDATE文をバッチ更新し、キーの値と一致する行が存在しない場合はINSERT文をバッチ更新します。

注意
  • [インサート・アップデート]を指定した場合、[スキーマ定義/キー]で選択したカラムに、一意性制約が設定されている必要があります。

    一意性制約が設定されていない場合は、[アップデート・インサート]または[バッチアップデート・インサート]を指定して実行してください。

  • [バッチアップデート・インサート]を指定し、以下の2つの条件を満たす場合、キーが重複するデータが複数挿入される場合があります。

    • 入力データに、同じキーを持つ行が複数存在する

    • 書き込むテーブルに、当該キーのデータが存在しない

バッチサイズ

省略可

使用可

バッチ更新するSQL文の件数を指定します。

  • [インサートモード][バッチインサート]を選択した場合および、[アップデートモード][バッチアップデート・インサート]を選択した場合、有効になります。

  • デフォルト値は「1000」で、省略した場合は「1000」が設定されます。

  • 入力できる値は「1~2147483647」です。

クエリタイムアウトを有効にする

必須

使用不可

クエリタイムアウトを有効にするかどうかを選択します。

[チェックあり]

クエリタイムアウトを設定します。

[チェックなし]

(デフォルト)

クエリタイムアウトを設定しません。

  • [チェックなし]とした場合、JDBCドライバのクエリタイムアウトを指定しない場合の動作にしたがいます。

クエリタイムアウト(秒)

必須

使用可

クエリタイムアウトを設定します。

  • [クエリタイムアウトを有効にする][チェックあり]とした場合、有効になります。

  • 入力できる値は「0~2147483647」です。

  • 本プロパティで入力した値は、JDBCのsetQueryTimeout()メソッドの引数に指定されます。

  • 一般的に、クエリタイムアウトは実行を待つ秒数を設定しますが、データベースや使用するJDBCドライバによって動作が異なる場合があります。

コメント

項目名

必須/省略可

変数の使用

説明

備考

コメント

省略可

使用不可

このコネクターの簡単な説明を記述することができます。

 

スキーマ

入力スキーマ

[スキーマ定義]の設定により、カラム数が異なります。

= 備考 =

スキーマ構造については、「テーブルモデル型 」を参照してください。

出力スキーマ

ありません。

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」

error_message

エラー発生時、発生したエラーのメッセージが格納されます。

  • デフォルト値はnullです。

error_trace

エラー発生時、発生したエラーのトレース情報が格納されます。

  • デフォルト値はnullです。

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

テーブル書き込み処理で更新を行う場合には、[キーの値と一致する行は更新]にチェックを入れ、キーとなる[列名]を選択します。

キーとして選択した列が一致した行を更新し、一致しない行を挿入します。キーとして選択した列名がUPDATE文のWHERE句に指定されます。

Insert/Update
  • 複数のキーを更新条件として指定できます。キーとして選択したすべて列が一致する行を更新します。

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

挿入時の動作

挿入時、[スキーマ定義/書き込み対象]にチェックを入れたカラムがINSERT文の挿入対象のカラムとして使用されます。

注意
  • 書き込み対象に含めないカラムに挿入される値は、データベースの仕様やカラムの制約や設定に依存します。

  • NOT NULL制約のあるカラムを書き込み対象に含めない場合、実行時にエラーとなります。

 

例:

  • スキーマ定義

    [書き込み対象]のチェック

    列名

    あり

    COLUMN1

    なし

    COLUMN2

    なし

    COLUMN3

  • カラムの制約・設定

    COLUMN1

    COLUMN2

    COLUMN3

    なし

    初期値設定あり(初期値:defaultValue)

    NULL許可制約

  • 入力データ

    COLUMN1

    data

  • 実行されるINSERT文

    INSERT INTO <テーブル名> (COLUMN1) VALUES ('data')

  • 処理後のデータ

    COLUMN1

    COLUMN2

    COLUMN3

    data

    defaultValue

    null

更新時の動作

更新時、[スキーマ定義/書き込み対象]にチェックを入れたカラムがUPDATE文の更新対象のカラムとして使用されます。

書き込み対象に含めないカラムの値は、更新は行われずにそのまま維持されます。

 

例:

  • スキーマ定義

    [書き込み対象]のチェック

    [キー]のチェック

    列名

    あり

    なし

    COLUMN1

    なし

    あり

    COLUMN2

    なし

    なし

    COLUMN3

  • 処理前のデータ

    COLUMN1

    COLUMN2

    COLUMN3

    data1

    data2

    data3

  • 入力データ

    COLUMN1

    COLUMN2

    updateValue

    data2

  • 実行されるUPDATE文

    UPDATE <テーブル名> SET COLUMN1 = 'updateValue' WHERE COLUMN2 = 'data2'

  • 処理後のデータ

    COLUMN1

    COLUMN2

    COLUMN3

    updateValue

    data2

    data3

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

  • [アップデートモード][アップデート・インサート]を指定して実行した場合、1行ごとにUPDATE文を実行し、更新がなかった場合にはINSERT文を実行します。

    したがって、入力データにアップデート対象のレコードが多い場合、[アップデート・インサート]を指定して実行する方が、[インサート・アップデート]を指定して実行するよりも効率がよくなります。

  • [アップデートモード][インサート・アップデート]を指定して実行した場合、1行ごとにINSERT文を実行し、挿入が失敗した場合にはUPDATE文を実行します。

    したがって、入力データにインサート対象のレコードが多い場合、[インサート・アップデート]を指定して実行する方が、[アップデート・インサート]を指定して実行するよりも効率がよくなります。

    = 備考 =

    UPDATE文で更新がなかった場合、処理は成功します。たとえば、INSERT文がキーの重複以外の理由で失敗した場合などが当てはまります。