DataWorks のデータ統合機能を使用して、テーブルデータを Alibaba Cloud SelectDB にインポートします。ApsaraDB for SelectDB。この例では、MySQL をデータソースとして使用して、ApsaraDB for SelectDB にデータを同期します。
制限事項
-
DataWorks の Data Integration 機能は、ApsaraDB for SelectDB から Alibaba Cloud SelectDB へのデータ同期のみをサポートしています。
-
BITMAP、HLL (HyperLogLog)、および QUANTILE_STATE フィールドへのデータ書き込みはサポートされていません。
データ同期タスクの開発
データソースの追加
データ同期タスクを開発する前に、DataWorks で MySQL データソースと SelectDB データソースを作成します。
-
MySQL データソースを作成します。詳細については、「MySQL データソース」をご参照ください。
-
SelectDB データソースを作成します。詳細については、「データソース管理」をご参照ください。以下の表に、主なパラメーターを示します。
パラメーター
説明
データソース名
データソースの名前です。
MySQL 接続文字列
JDBC 接続文字列:
jdbc:mysql://<ip>:<port>/<dbname>。ApsaraDB for SelectDB コンソールで、インスタンスの詳細 > ネットワーク情報 ページに移動し、VPC アドレス(または インターネットアドレス)および MySQL プロトコルポート を取得します。
例:
jdbc:mysql://selectdb-cn-4xl3jv1****.selectdbfe.rds.aliyuncs.com:9030/test_db説明MySQL インスタンスと ApsaraDB for SelectDB インスタンスが同じ VPC 内にある場合は、VPC アドレス を使用します。それ以外の場合は、インターネットアドレス を使用します。
HTTP 接続アドレス
HTTP 接続アドレス:
<ip>:<port>。ApsaraDB for SelectDB コンソールで、インスタンスの詳細 > ネットワーク情報 ページに移動し、VPC アドレス(または インターネットアドレス)および HTTP プロトコルポート を取得します。
例:
selectdb-cn-4xl3jv1****.selectdbfe.rds.aliyuncs.com:8080説明MySQL インスタンスと ApsaraDB for SelectDB インスタンスが同じ VPC 内にある場合は、VPC アドレス を使用します。それ以外の場合は、インターネットアドレス を使用します。
ユーザー名
ご利用の ApsaraDB for SelectDB インスタンスのユーザー名を入力します。
パスワード
ご利用の ApsaraDB for SelectDB インスタンスのユーザーのパスワードを入力します。
重要データソースを追加するには、SelectDB などのデータソースのホワイトリストに DataWorks リソースグループの IP アドレスを追加する必要があります。詳細については、「IP アドレスのホワイトリストへの追加」をご参照ください。ホワイトリストを構成する際は、専用および共有の Data Integration リソースグループを区別してください。
単一テーブルのオフライン同期の構成
オフライン同期タスクは、ウィザードモードまたはスクリプトモードで構成できます。詳細については、以下のトピックをご参照ください。
-
スクリプトモードのパラメーターの完全な一覧とスクリプトサンプルについては、「スクリプトモード:サンプルとパラメーター」をご参照ください。
スクリプトモード:サンプルとパラメーター
オフラインタスクのスクリプト構成
スクリプトモードでオフラインタスクを構成する場合は、「スクリプトモードでの構成」で説明されている形式を使用します。
MySQL Reader および SelectDB Writer のスクリプトサンプル
{
"type":"job",
"version":"2.0",
"steps":[
{
"stepType":"mysql",
"parameter":{
"column":[
"<id>",
"<table_id>",
"<table_no>",
"<table_name>",
"<table_status>"
],
"connection":[
{
"datasource":"<mysql_datasource>",
"table":[
"<mysql_table_name>"
]
}
],
"where":"",
"splitPk":"",
"encoding":"UTF-8"
},
"name":"Reader",
"category":"reader"
},
{
"stepType":"selectdb",
"parameter":{
"postSql":[
],
"preSql":[
],
"username": "<selectdb_username>",
"password": "<selectdb_password>",
"loadUrl":[
"<ip:port>"
],
"column":[
"<id>",
"<table_id>",
"<table_no>",
"<table_name>",
"<table_status>"
],
"connection":[
{
"datasource":"<selectdb_datasource>",
"table":[
"<selectdb_table_name>"
]
}
],
"maxBatchRows":1000000,
"loadProps":{
"format":"csv",
"column_separator": "\\x01",
"line_delimiter": "\\x02"
}
},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"
},
"speed":{
"throttle":false,
"concurrent":1
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}
スクリプトパラメーター
|
パラメーター |
説明 |
|
datasource |
必須。DataWorks データソースの名前です。この値は、作成したデータソースの名前と一致する必要があります。 |
|
table |
必須。送信先テーブルの名前です。 |
|
column |
必須。データを書き込む送信先カラムです。カンマ (,) で区切ります。例: |
|
loadUrl |
必須。SelectDB FE クラスターの HTTP エンドポイントです。形式は |
|
username |
必須。SelectDB データベースのユーザー名です。 |
|
password |
必須。SelectDB データベースユーザーのパスワードです。 |
|
preSql |
同期タスク開始前に実行する SQL ステートメントです。ウィザードモードでは 1 つのステートメントをサポートし、スクリプトモードでは複数のステートメントをサポートします(例:テーブルのクリア)。 |
|
postSql |
同期タスク完了後に実行する SQL ステートメントです。ウィザードモードでは 1 つのステートメントをサポートし、スクリプトモードでは複数のステートメントをサポートします(例:タイムスタンプの追加)。 |
|
maxBatchRows |
1 バッチあたりの最大インポート行数です。デフォルト値は 500,000 です。 |
|
loadProps |
COPY INTO のリクエストパラメーターで、インポートするデータ形式を指定します。デフォルトは JSON です。loadProps が構成されていない場合、または
CSV 形式を使用する場合は、以下のとおり形式を指定し、行および列のデリミタを構成します。指定しない場合、列はタブ区切り (
|
サポートされるデータの型
ApsaraDB for SelectDB は、以下のデータの型をサポートしています。
|
SelectDB データの型 |
オフライン書き込み |
|
INT |
サポート |
|
BIGINT |
サポート |
|
LARGEINT |
サポート |
|
SMALLINT |
サポート |
|
TINYINT |
サポート |
|
BOOLEAN |
サポート |
|
DECIMAL |
サポート |
|
DOUBLE |
サポート |
|
FLOAT |
サポート |
|
CHAR |
サポート |
|
VARCHAR |
サポート |
|
STRING |
サポート |
|
DATE |
サポート |
|
DATEV2 |
サポート |
|
DATETIME |
サポート |
|
DATETIMEV2 |
サポート |
|
ARRAY |
サポート |
|
JSONB |
サポート |
|
BITMAP |
未サポート |
|
HLL (HyperLogLog) |
未サポート |
|
QUANTILE_STATE |
未サポート |