全部产品
云市场

将OSS数据导入AnalyticDB for MySQL

更新时间:2019-09-02 10:52:05

本文介绍如何通过AnalyticDB for MySQL映射表和INSERT OVERWRITE INTO或者INSERT INTO将OSS中的数据导入AnalyticDB for MySQL。

前提条件

  • 通过以下步骤在对象存储(Object Storage Service,简称OSS)中准备测试数据。

    1. 开通OSS服务

      OSS与AnalyticDB for MySQL所属Region相同。

    2. 创建存储空间

    3. 新建文件夹

    4. 上传测试数据文件

      本示例将oss_import_test_data.txt文件上传至OSS中的bucket-name.oss-cn-hangzhou.aliyuncs.com/adb/目录,数据行分隔符为换行符,列分隔符为;,文件样例数据如下所示。

      1. 0001;hello_world_1
      2. 0002;hello_world_2
      3. 0003;hello_world_3
      4. 0004;hello_world_4
      5. 0005;hello_world_5
      6. 0006;hello_world_6
      7. ...

      上传OSS数据

  • 根据AnalyticDB for MySQL快速入门,完成创建实例、设置白名单、创建账号和数据库等准备工作。

实施步骤

  1. 连接AnalyticDB for MySQL,进入目标数据库。

    本示例将oss_import_test_data.txt中的数据导入AnalyticDB for MySQL的adb_demo库中。

  2. 通过CREATE TABLE,在adb_demo数据库中创建外部映射表oss_import_test_external_table

    1. CREATE TABLE IF NOT EXISTS oss_import_test_external_table
    2. (
    3. uid string,
    4. other string
    5. )
    6. ENGINE='OSS'
    7. TABLE_PROPERTIES='{
    8. "endpoint":"oss-cn-hangzhou-internal.aliyuncs.com",
    9. "url":"oss://bucket-name/adb/oss_import_test_data.txt",
    10. "accessid":"LTAIF****5FsE",
    11. "accesskey":"Ccw****iWjv",
    12. "delimiter":";",
    13. }'
    参数 说明
    ENGINE=’OSS’ 表示该表是外部表,使用的存储引擎是OSS。
    TABLE_PROPERTIES 用于告知AnalyticDB for MySQL如何访问OSS中的数据。
    endpoint OSS的EndPoint(域名节点)

    注意:目前仅支持AnalyticDB for MySQL通过OSS中ECS的VPC网络(内网)访问OSS。

    登录OSS控制台,单击目标Bucket,在Bucket概览页面查看endpoint

    查看OSS连接信息

    url OSS中oss_import_test_external_table文件的绝对地址。
    accessid 您在访问oss_import_test_external_table文件时所持有的AccessKey ID

    如何获取您的accessidaccesskey,请参见账号与权限管理

    accesskey 您在访问oss_import_test_external_table文件时所持有的Access Key Secret**。
    delimiter 定义OSS中数据文件的列分隔符。
    ossnull 标识NULL值,包含以下四种取值。
    • 1,默认值为1:EMPTY_SEPARATORS

      a,"",,c --> "a","",NULL,"c"

    • 2:EMPTY_QUOTES

      a,"",,c --> "a",NULL,"","c"

    • 3:BOTH

      a,"",,c --> "a",NULL,NULL,"c"

    • 4:NEITHER

      a,"",,c --> "a","","","c"

  3. 通过CREATE TABLE,在adb_demo数据库中创建目标表oss_import_test存储从OSS中导入的数据。

    1. CREATE TABLE IF NOT EXISTS adb_oss_import_test
    2. (
    3. uid string,
    4. other string
    5. )
    6. DISTRIBUTED BY HASH(uid)
  4. 执行INSERT语句将OSS数据导入AnalyticDB for MySQL。

    • 执行INSERT INTO导入数据。

      1. insert into adb_oss_import_test
      2. select * from oss_import_test_external_table
    • 执行INSERT OVERWRITE INTO导入数据。

      1. insert overwrite into adb_oss_import_test
      2. select * from oss_import_test_external_table