6.11 从OSS导入Json数据文件

HybridDB从OSS上导入Json文件需要如下3个步骤:

  • 在HybridDB中建立导出数据的真实存储表
  • 在HybridDB中建立一张外表映射到Json文件
  • 调用Insert into select来完成数据导入

举例如下:

1)在HybridDB中创建一张真实数据表

这一步是创建目标表,用于作为导入数据的目标表

CREATE TABLE IF NOT EXISTS hybriddb_import_json_test
(
uid varchar,
c1 int,
c2 bigint,
other varchar
)
DISTRIBUTE BY HASH(uid)
INDEX_ALL='Y'
ENGINE='CSTORE'

2)在HybridDB中创建一张外部映射表

这一步的作用是建立映射表,用于告诉HybridDB如何读取Json文件

CREATE TABLE IF NOT EXISTS import_json_test_external_table
(
uid varchar,
c1 int,
c2 bigint,
other varchar
)
ENGINE='OSS_JSON'
TABLE_PROPERTIES='{
"endpoint":"oss-xxxx.aliyuncs.com",
"url":"oss://xxx/xxx/oss_import_test_data_dir",
"accessid":"xxx",
"accesskey":"xxx",
}'

上表定义中

  • ENGINE=OSS_JSON用于表明该表是外部表,存储引擎是外部的OSS的Json数据文件
  • TABLE_PROPERTIES用于告诉HybridDB如何访问oss中的源头数据
    • endpoint:OSS的数据连接地址,请注意公有云和阿里集团内部是不一样的。
    • url: OSS中数据表文件所在的目录绝对地址
    • accessid: 访问OSS源头表数据的用户的accessid
    • accesskey: 访问OSS源头表数据的用户的accessKey

Json的原始数据为

[
  {
        "uid": "001",
        "c1": 1,
        "c2": 2,
        "other": "other1"
    },
    {
        "uid": "002",
        "c1": 3,
        "c2": null,
        "other": "other2"
    }
]

导入到 hybriddb_import_json_testt表中数据为

| uid  |  c1  |  c2  | other  |
|------|------|------|---------
| 001  |  1   |  2   | other1 |
| 002  |  3   |  null   | other2 |

3)执行sql语句开始导出

  • 实时ETL导入,实时可见

    insert into hybriddb_import_json_test
    select * from import_json_test_external_table
    
  • 如果需要清除数据后倒入

    insert overwrite into hybriddb_import_json_test
    select * from import_json_test_external_table
    

注意事项

  1. 要求两张表的DDL定义完全一致(HybridDB数据表、HybridDB外表)
  2. 支持源url路径为文件夹,可以并行的导入该文件夹下的子文件。
  3. 目前只支持Json文件的导入,不支持导出为Json文件。
  4. 这里导入导出都是同步模式,发起导入的mysql client连接需要一直保持,如需异步提交请参考6.7节

results matching ""

    No results matching ""