将OSS数据写入AnalyticDB for MySQL 3.0

您可以通过MySQL客户端、MySQL命令行工具连接DLA,或者直接在DMS for Data Lake Analytics中执行INSERT SELECT语句将OSS中的数据写入AnalyticDB for MySQL。

注意事项

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

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

    1. mysql -hxxx -Pxxx -uxxx -pxxx db_name -c
    • h:DLA的连接串信息,通过DLA控制台获取。

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

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

    • db_name:DLA中的Schema名。

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

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

写入数据

异步执行以下SQL将OSS table目录下dla_table_1文件中的数据写入AnalyticDB for MySQL adb_demo数据库的shipping表。

  1. -- 执行OSSAnalyticDB for MySQL的全量数据写入。
  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 for MySQL adb_demo数据库中的order_table表。

  1. -- 执行OSSAnalyticDB for MySQL的数据写入,包含对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 INTO SELECT语句将返回一个task id,在AnalyticDB for MySQL中通过task id轮询任务执行情况,如果status为SUCCESS,则任务完成。

  1. SHOW query_task WHERE id = 'q201812241524sh385b7d4c0049869'

后续操作

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