# Teradata Import Integration Teradata統合により、Teradata ServerからTreasure Dataへのデータのインポートが可能になります。 ## 前提条件 - Treasure Dataの基本的な知識 - Teradata SQLの基本的な知識 - 実行中のTeradataインスタンス ## 新しい認証を作成する 1. **Integrations Hub** > **Catalog**に移動します。 2. **Teradata**を検索して選択します。 ![](/assets/screenshot-2025-09-22-at-13.54.24.5d30937afd0315366a6d3a21b90713a0f11faa37f019e9dea6df06e1112faf9e.de62830b.png) 1. ダイアログが開きます。![](/assets/screenshot-2025-09-22-at-13.59.50.f6b3ebecf738cd695dbc99f011ca71868b5c579bfe554bfe41f4ccdcdad8570d.743d8bf4.png) 2. 設定を入力します。 | **Parameters** | **Description** | | --- | --- | | **Host** | Teradataデータベースのホスト情報、例:IPアドレス。 | | **Port** | インスタンスの接続ポート。Teradataのデフォルトは1025です。 | | **Username** | Teradataデータベースに接続するためのユーザー名。 | | **Password** | Teradataデータベースに接続するためのパスワード。 | | OPTIONS | | | **JDBC Connection options** | Teradataデータベースが必要とする特別なJDBC接続。次のJDBCオプションは無視されるため追加しないでください: - DBS_PORT(port設定を使用) - DATABASE(database設定を使用) - USER(user設定を使用) - PASSWORD(password設定を使用) - LOGMECH(現在TD2のみサポート) | | **connection timeout** | ソケット接続のタイムアウト(秒単位)(デフォルトは300)。 | | **Network timeout** | ネットワークソケット操作のタイムアウト(秒単位)(デフォルトは1800)。0はタイムアウトなしを意味します。 | 3. 接続の名前を入力し、**Done**を選択します。 ## クエリを検証する SQLクエリからデータをロードする場合は、クエリが有効なSELECTステートメントであることを確認してください。複数のステートメントはサポートされていません。 ## 新しい転送を作成する 接続を作成すると、自動的にAuthenticationsタブに移動します。作成した接続を探し、Sourceを選択します。 ### インポートタイプ インポートのソースタイプを選択します。テーブル/ビュー全体をロードする(**table/view loading**)か、SQLの結果をロードする(**query loading**)かを選択します。 ### Table/View Loading テーブル/ビュー全体をロードする場合は、「Table/View」を選択し、ロードする「Table/View name」を入力します。 ![](/assets/screenshot-2025-09-22-at-14.13.38.1ca1d9f600bea34154d7dcd98acee705314651e00e74e3e77ba2e57ba15cdcac.743d8bf4.png) ### Query Loading SQLの結果をロードする場合は、「Query statement」を選択し、「SQL statement」にSQLクエリを入力します。 転送を作成する前に、クエリが有効なSELECTクエリであり、単一のステートメントであることを確認してください。QueryとIncrementalからデータを取得する場合、クエリステートメントはORDER BY句を除外する必要があります ![](/assets/screenshot-2025-09-22-at-14.13.46.1dd0f43843aed8ba2988e2b9768acb7cf8df9df8c5aab1d434f79845b46dbc83.743d8bf4.png) ### Incremental Loading Incremental Loadingは、自動増分IDカラムやタイムスタンプカラムなど、増加する一意のカラムを使用して、前回の実行後の新しいレコードのみをロードできます。 これを有効にするには、**Incremental Loading**をチェックし、「Incremental Column Name」に増分するカラム名を指定します。 インクリメンタルカラムとしてサポートされているのは、INTEGERまたはBIGINT型とTIMESTAMP型のみです。 この値からインクリメンタルローディングを開始する場合は、Start Afterを入力します。インクリメンタルカラムがTimestamp型の場合、入力はyyyy-MM-dd'T'HH:mm:ss.SSSSSS形式のTimestamp文字列である必要があり、値はUTCタイムゾーンとして扱われます。 ### 仕組み このコネクタは、インクリメンタルカラムで順序付けられた最新のレコードである「last record」を記録します。次の実行では、last recordを使用して次のルールで構築されたクエリを実行してレコードをロードします: テーブルローディングでは、すべてのフィールドがWHERE句で選択されます。 ```sql SELECT * FROM `${dataset}.${table}` WHERE ${incremental_column} > ${value_of_last_record} ``` クエリローディングでは、生のクエリがWHERE句でラップされます。 ```sql SELECT * FROM (${query}) embulk_incremental_ WHERE ${incremental_column} > ${value_of_last_record} ``` ### Data Settings 1. **Next**を選択します。Data Settingsページが開きます。 2. 必要に応じてデータ設定を編集するか、このページをスキップします。 ![](/assets/screenshot-2025-10-01-at-11.20.59.d819cf0f8af4a40ce0c72b848885d73b9d4ea020884c6da2ae5ae6d711a3e050.de62830b.png) | **Parameters** | **Description** | | --- | --- | | **Rows per batch** | 非常に大きなデータセットはメモリの問題を引き起こし、その結果ジョブが失敗する可能性があります。このフラグを使用して、インポートジョブを行数でバッチに分割し、メモリの問題やジョブの失敗の可能性を減らします。無制限の場合は0に設定します。それ以外の場合、値は0より大きい必要があります | ### Data Preview データソースを設定した後、**Next**を選択し、次に**Next**をクリックして**Generate Preview**をクリックすると、ソースからのサンプル結果が表示されます。 ![](/assets/screenshot-2025-06-19-at-20.01.44.dcf46bfcd8a375d6920bf72da305e9137a1b2f13edb80368a3465a32fed59d70.743d8bf4.png) ### Transfer to プレビューから**Next**を選択すると、データを転送するTreasure Dataのデータベースとテーブルを選択するように求められます。新しいデータベースを作成する場合は、**Create new database**を選択してデータベースに名前を付けます。**Create new table**でも同様の手順を実行します。 既存のテーブルにレコードを追加するか、既存のテーブルを置き換えるかを選択します。 デフォルトのキーとは異なるパーティションキーシードを設定する場合は、「Partition key seed」から選択できます。 ![](/assets/screenshot-2025-06-19-at-20.04.48.211e037cc3ab299c70ea11abc8fc249b8df092b3e25887c57ab4b5d60b2a18b4.743d8bf4.png) ### Schedule SCHEDULEセクションでは、インポートジョブを1回限りの転送として指定するか、自動化された定期的な転送をスケジュールできます。 転送が実行された後、Databasesタブで転送の結果を確認できます。 ## Appendix ### Data Conversion Teradataのデータ型は、次の表に示すように、対応するTreasure Dataの型に自動的に変換されます。テーブル/ビューまたはクエリ結果のスキーマにサポートされていない型を含めると、エラーが発生します。 | Teradata Data Type | TD Data Type | | --- | --- | | BYTEINT | Long | | SMALLINT | Long | | INTEGER | Long | | BIGINT | Long | | FLOAT | Double | | DECIMAL | String | | CHAR | String | | VARCHAR | String | | BYTE | Unsupport | | VARBYTE | Unsupport | | DATE | String | | TIME | String | | TIMESTAMP | Timestamp | | CLOB | String | | BLOB | Unsupport | | Structured UDT | String | | INTERVAL | String | | JSON | String | | XML | String | | PERIOD | String | | GEO | String | ### Quotas and Limits Teradata Serverのクォータと制限。 ## CLIでTeradataコネクタを使用する 必要に応じて、[TD Toolbelt](https://toolbelt.treasuredata.com/)を介してコネクタを使用できます。 CLIで[TD Toolbelt](https://api-docs.treasuredata.com/en/tools/cli/quickstart/)をセットアップします。 ### 設定ファイルを作成する ここでは「config.yml」と呼ばれる設定YAMLファイルを作成します。 例:bigintegerデータ型のインクリメンタルカラムとlast_recordを設定したテーブルからのインポート ```yaml in: type: teradata host: xxx options: {"xxx": "xxx"} connect_timeout:300 socket_timeout:1800 user: xxx port: 1025 password: xxxx database: xxxxx source_type: table_view table: xxxx fetch_rows: 10000 incremental: true incremental_column: big_int_column last_record: 100 ``` 例:timestampデータ型のインクリメンタルカラムとlast_recordを設定したQueryからのインポート ```yaml in: type: teradata host: xxx options: {"xxx": "xxx"} connect_timeout:300 socket_timeout:1800 user: xxx port: 1025 password: xxxx database: xxxxx source_type: query query: | SELECT * FROM tbl; fetch_rows: 10000 incremental: true incremental_column: created_at last_record: '2025-08-26T12:10:42.010000' ``` ### Parameters | Name | Description | Type | Value | Default Value | Required | | --- | --- | --- | --- | --- | --- | | type | コネクタタイプ | string | teradata | N/A | Yes | | host | Teradataサーバーホスト | string | N/A | N/A | Yes | | port | Teradataサーバーポート | number | N/A | 1025 | | | options | Teradata JDBCオプション | string (ハッシュオブジェクト形式) | N/A | N/A | No | | connect_timeout | Teradataログオンタイムアウト | number | N/A | 300 | No | | socket_timeout | ネットワークソケット操作のタイムアウト | number | N/A | 1800 | No | | database | Teradataデータベース | string | N/A | N/A | Yes | | source_type | ソースインポート | string | サポート値: - table_view - query | table | Yes | | table | テーブル名 | string | N/A | N/A | source_typeがtable_viewの場合は必須 | | query | SQLステートメント | string | N/A | N/A | source_typeがqueryの場合は必須 | | incremental | インクリメンタルローディングを有効にするかどうか | boolean | true/false | false | No | | incremental_column | インクリメンタルローディング用のカラム名 INTEGER、BIGINTまたはTIMESTAMPデータ型のみサポート | string | N/A | N/A | incrementalがtrueの場合は必須 | | last_record | この値からインクリメンタルインポートを開始します。カラムインクリメンタルがtimestampデータ型の場合、この値はyyyy-MM-dd'T'HH:mm:ss.SSSSSS形式に従う必要があり、UTCタイムゾーンとして扱われます | string | N/A | N/A | No | #### (オプション)Preview 設定ファイルを検証するために、td [td connector:preview](https://api-docs.treasuredata.com/en/tools/cli/api/#td-connector-preview)コマンドを実行します ```bash td connector:preview config.yml ``` ### 新しいコネクタセッションを作成する [td connector:create](https://api-docs.treasuredata.com/en/tools/cli/api/#td-connector-create)を実行します。 次の例では、Teradataコネクタを使用した日次インポートセッションが作成されます。 ```bash td connector:create daily_teradata_import \ "10 0 * * *" td_sample_db td_sample_table config.yml ``` ### Data Partition Key コネクタセッションでは、結果データにデータパーティションキーとして使用される少なくとも1つのタイムスタンプカラムが必要であり、デフォルトでは最初のタイムスタンプカラムがキーとして選択されます。カラムを明示的に指定する場合は、「**--time-column**」オプションを使用します。 ```bash $ td connector:create --time-column created_at \ daily_teradata_import ... ``` 結果データにタイムスタンプカラムがない場合は、次のようにフィルタ設定を追加して「**time**」カラムを追加します。 ```yaml in: type: teradata ... filters: - type: add_time from_value: mode: upload_time to_column: name: time out: type: td ```