全部产品
云市场

执行INSERT FROM SELECT迁移数据

更新时间:2019-03-17 17:16:38

执行INSERT FROM SELECT将OSS中的数据迁移至AnalyticDB

通过MySQL客户端、MySQL命令行工具或者DMS for Data Lake Analytics控制台执行INSERT FROM SELECT语句。

注意事项

  • INSERT FROM SELECT通常为长时运行任务,建议通过异步执行方式。

  • 使用MySQL命令行时,需要在命令行中指定-c参数,用来识别MySQL语句前的hint。

    1. mysql -hxxx -Pxxx -uxxx -pxxx db_name -c
    • h:DLA的连接串信息,通过DLA控制台获取。如果您的MySQL客户端或者MySQL命令行工具安装在与DLA同地域的ECS上,且ECS所属VPC与DLA所属VPC相同,则使用DLA VPC专有网络连接串。否则,使用DLA经典网络连接串。

    • P:DLA的连接端口,通过DLA控制台获取。

    • u:DLA用户名,详情,请参见账号和权限

    • db_name:DLA中的Schema名。

  • 如果在INSERT INTO子句和SELECT子句中没有指定列信息,请确保源表和目标表的列定义顺序一致,列类型对应匹配。

  • 如果在INSERT INTO子句和SELECT子句中指定列的信息,请确保两者中的列的顺序符合业务需要,列类型对应匹配。

写入数据

异步执行以下SQL,将OSS中table目录下dla_table_1文件中的数据插入AnalyticDB中ads_database数据库中的shipping表。

  1. -- 执行OSSAnalyticDB的全量数据插入
  2. /*+run-async=true*/
  3. INSERT INTO ads_database_schema.shipping
  4. SELECT * FROM oss_data_schema.dla_table_1;

异步执行以下SQL,将OSS中table目录下dla_table_1文件中order_amount > 2的数据插入AnalyticDB中ads_database数据库中的order_table表。

  1. -- 执行OSSAnalyticDB的数据插入,包含对OSS数据的筛选逻辑
  2. /*+run-async=true*/
  3. INSERT INTO ads_database_schema.order_table1 (customer1_id, order1_id, order1_time, order1_amount,order1_type,address1,city1,order1_season)
  4. SELECT customer_id, order_id, order_time, order_amount,order_type,address,city,order_season
  5. FROM oss_data_schema.dla_table_2
  6. WHERE order_amount > 2
  7. LIMIT 10000;

查询写入结果

异步执行INSERT FROM SELECT语句,将返回一个task id,在AnalyticDB通过task id轮询任务执行情况,如果status为SUCCESS,则任务完成。

  1. SHOW query_task WHERE id = 'q201812241524sh385b7d4c0049869'

后续操作

将OSS数据迁移至AnalyticDB后,您就可以使用AnalyticDB提供的各项功能进行数据分析计算。