このトピックでは、カタログを使用して MaxCompute (MC) から ApsaraDB for SelectDB にオフラインデータを移行する方法について説明します。
前提条件
MaxCompute の Storage API 機能を有効にする必要があります。詳細については、「テナントプロパティ」をご参照ください。
環境例
この例では、MaxCompute の bank_data テーブルから SelectDB の mc_db データベースの test_mc2SelectDB テーブルにデータを移行する方法を示します。
ソーステーブル: bank_data
ターゲットデータベース: mc_db
ターゲットテーブル: test_mc2SelectDB
手順
SelectDB インスタンスに接続します。詳細については、「インスタンスへの接続」をご参照ください。
カタログを作成します。
MaxCompute カタログを作成します。
CREATE CATALOG mc PROPERTIES ( "type" = "max_compute", "mc.region" = "cn-beijing", "mc.default.project" = "yourProject", "mc.access_key" = "yourAccessKeyID", "mc.secret_key" = "yourAccessKeySecret", "mc.endpoint" = "https://service.cn-beijing-vpc.maxcompute.aliyun-inc.com/api" );パラメーター
説明
type
値は "max_compute" に固定されます。
mc.region
MaxCompute プロジェクトが配置されているリージョン。
mc.default.project
MaxCompute プロジェクトの名前。
mc.access_key
AccessKey ID。詳細については、「AccessKey の作成」をご参照ください。
mc.secret_key
AccessKey Secret。
mc.public_access
mc.endpointがインターネットエンドポイントとして設定されている場合は、"mc.public_access"="true"を設定する必要があります。mc.endpoint
MaxCompute プロジェクトが配置されているリージョンのエンドポイント。
(推奨) VPC エンドポイント: ApsaraDB for SelectDB インスタンスと MaxCompute プロジェクトが同じリージョンにあることを確認してください。
インターネットエンドポイント: パブリックネットワークアクセスはセキュリティリスクをもたらし、帯域幅が制限されます。本番環境での使用は推奨されません。パブリックネットワークアクセスを使用するには、「インターネット NAT ゲートウェイを使用したパブリックネットワークアクセス」をご参照ください。
説明ApsaraDB for SelectDB バージョン 4.0 以降では、このパラメーターが必要です。
カタログを表示します。
SHOW CATALOGS; -- カタログが作成されたかどうかを確認します。次の結果が返されます。
CatalogId CatalogName Type IsCurrent CreateTime LastUpdateTime Comment 0 internal internal Yes Doris internal catalog 175854218**** mc max_compute No 2025-09-24 11:26:27.552259510(任意) 外部カタログ mc に切り替えます。
説明現在、ApsaraDB for SelectDB は外部カタログ内のデータに対する読み取り操作のみをサポートしています。内部カタログのデータにアクセスするのと同じ方法で、外部カタログ mc のデータを表示およびアクセスできます。詳細については、「クエリ構文」をご参照ください。
SWITCH mc;(任意) 内部カタログ internal に切り替えます。前のステップを実行しなかった場合は、このステップをスキップしてください。
SWITCH internal;
ターゲットデータベースとテーブルを作成します。
ターゲットデータベースを作成します。
CREATE database mc_db;ターゲットデータベースに切り替えます。
USE mc_db;テーブルを作成します。ターゲット列のデータの型は、MaxCompute のソース列のデータの型に対応している必要があります。列の型のマッピングの詳細については、「列の型のマッピング」をご参照ください。
CREATE TABLE test_mc2SelectDB ( age BIGINT COMMENT '年齢', job VARCHAR(255) COMMENT '職種', marital VARCHAR(255) COMMENT '婚姻状況', education VARCHAR(255) COMMENT '学歴', credit VARCHAR(255) COMMENT 'クレジットカードの有無', housing VARCHAR(255) COMMENT '住宅ローンの有無', loan VARCHAR(255) COMMENT '個人ローンの有無', contact VARCHAR(255) COMMENT '連絡方法', month VARCHAR(255) COMMENT '月', day_of_week VARCHAR(255) COMMENT '曜日', duration VARCHAR(255) COMMENT '期間', campaign BIGINT COMMENT 'このキャンペーン中に行われた連絡の回数', pdays DOUBLE COMMENT '最後の連絡からの間隔', previous DOUBLE COMMENT 'このキャンペーンの前に行われた連絡の回数', poutcome VARCHAR(255) COMMENT '前回のマーケティングキャンペーンの結果', emp_var_rate DOUBLE COMMENT '雇用変動率', cons_price_idx DOUBLE COMMENT '消費者物価指数', cons_conf_idx DOUBLE COMMENT '消費者信頼感指数', euribor3m DOUBLE COMMENT 'ユーリボー 3 か月金利', nr_employed DOUBLE COMMENT '従業員数', fixed_deposit BIGINT COMMENT '定期預金の有無' ) DISTRIBUTED BY HASH(age) BUCKETS 10 PROPERTIES ( "replication_num" = "1" );
データを移行します。次の SQL 文で、
<yourProject>をお使いの MaxCompute プロジェクトの名前に置き換えます。INSERT INTO test_mc2SelectDB SELECT * FROM mc.<yourProject>.bank_data;COUNTやSUMなどのテーブル統計をクエリして、ソーステーブルとターゲットテーブル間のデータ整合性を検証します。以下に例を示します。SELECT COUNT(*) FROM test_mc2SelectDB;