6.6 数据导出到MongoDB

数据从HybridDB导出到MongoDB中需要如下3个步骤:

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

举例如下:

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

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

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

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

这一步的作用是建立映射表,用于告诉HybridDB如何写入MongoDB数据

CREATE TABLE IF NOT EXISTS export_mongo_mongo_external_table
(
uid varchar,
c1 int,
c2 bigint,
other varchar
)
ENGINE='MONGODB'
TABLE_PROPERTIES='{
"host":"XXXXX",
"port":"XXXX",
"db":"XXXX",
"user":"XXXX",
"user":"XXXX",
}'

上表定义中

  • ENGINE=MongoDB用于表明该表是外部表,存储引擎是外部的MONGODB

  • TABLE_PROPERTIES用于告诉HybridDB如何访问mongo中的源头数据

    • host:MongoDB的host。
    • port: 将要写入MongoDB的port
    • db: MongoDB里的DB 名
    • user: MongoDB的用户名
    • password: MongoDB密码

以上表为例,假设hybriddb_export_mongo_test表中数据为

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

导出到 export_mongo_mongo_external_table 后数据为

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

3)执行sql语句开始导出

  • 实时ETL导入,实时可见

    insert into export_mongo_mongo_external_table
    select * from hybriddb_export_mongo_test
    
  • 如果需要清除数据后倒入
    insert overwrite into export_mongo_mongo_external_table
    select * from hybriddb_export_mongo_test
    

注意事项

  1. 要求两张表的DDL定义完全一致(HybridDB数据表、HybridDB外表)
  2. 目前只支持导出到MongoDB,不支持从MongoDB导入。
  3. 公有云VPC网络不支持这种外表方式导入,需要用户自己借助其他方式完成
  4. 这里导入导出都是同步模式,发起导入的mysql client连接需要一直保持,如需异步提交请参考6.7节

results matching ""

    No results matching ""