日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

MongoDB數(shù)據(jù)導(dǎo)入

更新時間:

本文介紹如何通過外表查詢MongoDB數(shù)據(jù),以及如何將MongoDB中的數(shù)據(jù)導(dǎo)入至云原生數(shù)據(jù)倉庫 AnalyticDB MySQL 版

前提條件

  • AnalyticDB for MySQL集群的產(chǎn)品系列為企業(yè)版、基礎(chǔ)版或湖倉版

  • 已在AnalyticDB for MySQL控制臺集群信息頁面的網(wǎng)絡(luò)信息欄啟用ENI網(wǎng)絡(luò)開關(guān)。

  • MongoDB實例與AnalyticDB for MySQL所屬同一VPC。具體操作,請參見創(chuàng)建集群

  • 已將AnalyticDB for MySQL集群的VPC網(wǎng)段加入MongoDB實例的白名單中。具體操作,請參見修改白名單

導(dǎo)入MongoDB非嵌套文檔

示例數(shù)據(jù)說明

本文示例的MongoDB數(shù)據(jù)庫名為test_mongodb,并在該庫中創(chuàng)建名為person的集合,示例如下:

use test_mongodb;
db.createCollection("person");

person集合中插入文檔,示例如下:

db.person.insert({"id":1,"name":"james","age":10});
db.person.insert({"id":2,"name":"bond","age":20});
db.person.insert({"id":3,"name":"jack","age":30});
db.person.insert({"id":4,"name":"lock","age":40});

操作步驟

  1. 進入SQL開發(fā)編輯器。

    1. 登錄云原生數(shù)據(jù)倉庫AnalyticDB MySQL控制臺,在左上角選擇集群所在地域。在左側(cè)導(dǎo)航欄,單擊集群列表,在企業(yè)版、基礎(chǔ)版或湖倉版頁簽下,單擊目標集群ID。

    2. 在左側(cè)導(dǎo)航欄,單擊作業(yè)開發(fā) > SQL開發(fā)

  2. 執(zhí)行以下語句,創(chuàng)建外部數(shù)據(jù)庫。示例如下:

    CREATE EXTERNAL DATABASE adb_external_db;
  3. 創(chuàng)建外表。示例如下:

    重要

    AnalyticDB for MySQL的外表和MongoDB文檔中的字段(field)名稱、字段數(shù)量、字段順序、數(shù)據(jù)類型必須相同。

    CREATE EXTERNAL TABLE adb_external_db.person (
      id int,
      name string,
      age int
    ) ENGINE = 'MONGODB' TABLE_PROPERTIES ='{
    "mapped_name":"person",
    "location":"mongodb://testuser:****@dds-bp113d414bca8****.mongodb.rds.aliyuncs.com:3717,dds-bp113d414bca8****.mongodb.rds.aliyuncs.com:3717/test_mongodb",
    "username":"testuser",
    "password":"password",
    }';

    表 1. 參數(shù)說明

    參數(shù)

    說明

    mapped_name

    MongoDB集合的名稱。本文示例中為person

    location

    MongoDB的專有網(wǎng)絡(luò)地址。如何獲取專有網(wǎng)絡(luò)的連接地址,請參見實例連接地址說明

    格式:mongodb://testuser:****@dds-bp113d414bca8****.mongodb.rds.aliyuncs.com:3717,dds-bp113d414bca8****.mongodb.rds.aliyuncs.com:3717/database

    示例:mongodb://testuser:****@dds-bp113d414bca8****.mongodb.rds.aliyuncs.com:3717,dds-bp113d414bca8****.mongodb.rds.aliyuncs.com:3717/test_mongodb

    說明

    在連接MongoDB時,請勿使用Secondary節(jié)點地址。

    username

    MongoDB數(shù)據(jù)庫的賬號。如何創(chuàng)建數(shù)據(jù)庫賬號,請參見MongoDB數(shù)據(jù)庫賬號權(quán)限管理

    說明

    MongoDB需要在目標數(shù)據(jù)庫中校驗數(shù)據(jù)庫的賬號和密碼,請使用MongoDB專有網(wǎng)絡(luò)地址中指定數(shù)據(jù)庫的賬號,如遇問題,請聯(lián)系技術(shù)支持。

    password

    MongoDB數(shù)據(jù)庫賬號的密碼。

  4. 查詢數(shù)據(jù)。

    外表創(chuàng)建成功后,您可以使用SELECT語句查詢person集合中的數(shù)據(jù)。

    SELECT * FROM adb_external_db.person;

    返回結(jié)果:

    +------+-------+------+
    | id   | name  | age  |
    +------+-------+------+
    |    1 | james |   10 |
    |    2 | bond  |   20 |
    |    3 | jack  |   30 |
    |    4 | lock  |   40 |
    +------+-------+------+
    4 rows in set (0.35 sec)
  5. AnalyticDB for MySQL集群中創(chuàng)建數(shù)據(jù)庫和表,用于存儲從MongoDB中導(dǎo)入的數(shù)據(jù)。

    1. 創(chuàng)建名為adb_demo的數(shù)據(jù)庫。

      CREATE DATABASE adb_demo; 
    2. 創(chuàng)建名為adb_demo.adb_import_test的數(shù)據(jù)表。

      重要

      AnalyticDB for MySQL企業(yè)版、基礎(chǔ)版及湖倉版中創(chuàng)建的表和AnalyticDB for MySQL外表中的字段名稱、字段數(shù)量、字段順序、數(shù)據(jù)類型必須相同。

       CREATE TABLE IF NOT EXISTS adb_demo.adb_import_test(id int,name varchar(1023),age int ) DISTRIBUTED BY HASH(id);
  6. 將MongoDB中的數(shù)據(jù)導(dǎo)入至AnalyticDB for MySQL企業(yè)版、基礎(chǔ)版及湖倉版中。

    • 方法一:使用INSERT INTO語句導(dǎo)入數(shù)據(jù),當主鍵重復(fù)時會自動忽略當前寫入數(shù)據(jù),數(shù)據(jù)不做更新,作用等同于INSERT IGNORE INTO,更多信息,請參見INSERT INTO。示例如下:

      INSERT INTO adb_demo.adb_import_test SELECT * FROM adb_external_db.person;
    • 方法二:使用INSERT OVERWRITE INTO語句同步導(dǎo)入數(shù)據(jù),會覆蓋表中原有的數(shù)據(jù)。示例如下:

      INSERT OVERWRITE INTO adb_demo.adb_import_test SELECT * FROM adb_external_db.person;
    • 方法三:使用INSERT OVERWRITE INTO語句異步導(dǎo)入數(shù)據(jù),更多信息,請參見異步寫入。示例如下:

      SUBMIT JOB INSERT OVERWRITE adb_demo.adb_import_test SELECT * FROM adb_external_db.person;
  7. 數(shù)據(jù)導(dǎo)入完成后,您可以使用SELECT語句查詢adb_demo.adb_import_test表中的數(shù)據(jù)。

    SELECT * FROM adb_demo.adb_import_test;

    返回結(jié)果:

    +------+-------+------+
    | id   | name  | age  |
    +------+-------+------+
    |    1 | james |   10 |
    |    2 | bond  |   20 |
    |    3 | jack  |   30 |
    |    4 | lock  |   40 |
    +------+-------+------+

查詢MongoDB嵌套文檔

示例數(shù)據(jù)

在數(shù)據(jù)庫test_mongodb中創(chuàng)建名為test_json的集合,示例如下:

db.createCollection("test_json");

test_json集合中插入文檔,其中cityname為嵌套字段,示例如下:

db.test_json.insert(    {
        'id': 1,
        'details':{'city': "hangzhou", "name":"jack"}
    })

操作步驟

  1. 進入SQL開發(fā)編輯器。

    1. 登錄云原生數(shù)據(jù)倉庫AnalyticDB MySQL控制臺,在左上角選擇集群所在地域。在左側(cè)導(dǎo)航欄,單擊集群列表,在企業(yè)版、基礎(chǔ)版或湖倉版頁簽下,單擊目標集群ID。

    2. 在左側(cè)導(dǎo)航欄,單擊作業(yè)開發(fā) > SQL開發(fā)

  2. 執(zhí)行以下語句,創(chuàng)建外部數(shù)據(jù)庫。示例如下:

    CREATE EXTERNAL DATABASE adb_external_db;
  3. 創(chuàng)建外表。示例如下:

    重要
    • AnalyticDB for MySQL的外表和MongoDB文檔中的字段(field)名稱、字段數(shù)量、字段順序、數(shù)據(jù)類型必須相同。

    • 不支持通過外表將數(shù)據(jù)寫入MongoDB嵌套文檔。

    CREATE EXTERNAL TABLE adb_external_db.test_json (
      id int,
      city string,
      name string
    ) ENGINE = 'MONGODB' TABLE_PROPERTIES ='{
    "mapped_name":"test_json",
    "location":"mongodb://testuser:****@dds-bp113d414bca8****.mongodb.rds.aliyuncs.com:3717,dds-bp113d414bca8****.mongodb.rds.aliyuncs.com:3717/test_mongodb",
    "username":"testuser",
    "password":"password",
    "COLUMN_MAPPING":"city,details.city;name,details.name",
    }';

    參數(shù)說明:

    • COLUMN_MAPPING:定義外表字段與MongoDB字段的映射關(guān)系。例如:外表的city字段與MongoDB文檔的details.city字段為映射關(guān)系。

    • 外表中其他參數(shù)的詳細說明,請參見參數(shù)說明

  4. 查詢數(shù)據(jù)。

    外表創(chuàng)建成功后,您可以使用SELECT語句查詢test_json集合中的數(shù)據(jù)。

    SELECT * FROM adb_external_db.test_json;

    返回結(jié)果:

    +------+----------+-------+
    | id   |  city    |  name |
    +------+----------+-------+
    |    1 | hangzhou |  jack |
    +------+----------+-------+
    說明

    如果要將MongoDB嵌套文檔導(dǎo)入到AnalyticDB for MySQL中,需要先創(chuàng)建用于存儲MongoDB嵌套文檔的數(shù)據(jù)庫和數(shù)據(jù)表,具體操作,請參見導(dǎo)入MongoDB非嵌套文檔中的步驟5~7。

查詢ObjectId字段

示例數(shù)據(jù)

在數(shù)據(jù)庫test_mongodb中創(chuàng)建名為test_objectid的集合,示例如下:

db.createCollection("test_objectid");

test_objectid集合中插入文檔,示例如下:

db.test_objectid.insert(    {
        'id': 1,
    })

查詢test_objectid集合中的文檔,示例如下:

db.test_objectid.find()

返回結(jié)果:

{
   "_id":"ObjectId("641002ad883a73eb0d7291a7")"
   "id":1
}

操作步驟

  1. 進入SQL開發(fā)編輯器。

    1. 登錄云原生數(shù)據(jù)倉庫AnalyticDB MySQL控制臺,在左上角選擇集群所在地域。在左側(cè)導(dǎo)航欄,單擊集群列表,在企業(yè)版、基礎(chǔ)版或湖倉版頁簽下,單擊目標集群ID。

    2. 在左側(cè)導(dǎo)航欄,單擊作業(yè)開發(fā) > SQL開發(fā)

  2. 執(zhí)行以下語句,創(chuàng)建外部數(shù)據(jù)庫。示例如下:

    CREATE EXTERNAL DATABASE adb_external_db;
  3. 創(chuàng)建外表。示例如下:

    重要

    AnalyticDB for MySQL的外表和MongoDB文檔中的字段(field)名稱、字段數(shù)量、字段順序、數(shù)據(jù)類型必須相同。

    CREATE EXTERNAL TABLE adb_external_db.test_objectid (
      id int,
      _id objectid
    ) ENGINE = 'MONGODB' TABLE_PROPERTIES ='{
    "mapped_name":"test_objectid",
    "location":"mongodb://testuser:****@dds-bp113d414bca8****.mongodb.rds.aliyuncs.com:3717,dds-bp113d414bca8****.mongodb.rds.aliyuncs.com:3717/test_mongodb",
    "username":"testuser",
    "password":"password",
    }';
  4. 查詢數(shù)據(jù)。

    外表創(chuàng)建成功后,您可以使用SELECT語句查詢test_objectid集合中的數(shù)據(jù)。

    SELECT cast(_id as string) FROM adb_external_db.test_objectid;

    返回結(jié)果:

    +----------------------------+
    |    CAST(_id AS string)     | 
    +----------------------------+
    |  641002ad883a73eb0d7291a7  |
    +----------------------------+
    說明

    如果要將ObjectId字段導(dǎo)入到AnalyticDB for MySQL中,需要先創(chuàng)建用于存儲ObjectId字段的數(shù)據(jù)庫和數(shù)據(jù)表,具體操作,請參見導(dǎo)入MongoDB非嵌套文檔中的步驟5~7。

外表支持的數(shù)據(jù)類型

AnalyticDB for MySQL外表

MongoDB數(shù)據(jù)表

Boolean

Boolean

ObjectId

ObjectId

String

String

Int

32-bit Integer、Int

Bigint

64-bit Integer Long

Double

Double

Date

Date