通过外部表同步数据
PALO 可以创建通过 ODBC 协议访问的外部表。创建完成后,可以通过 SELECT 语句直接查询外部表的数据,也可以通过 INSERT INTO SELECT 的方式导入外部表的数据。
本文档主要介绍如何创建通过 ODBC 协议访问的外部表,以及如何导入这些外部表的数据。目前支持的数据源包括:
- MySQL
- Oracle
- PostgreSQL
创建外部表
创建 ODBC 外部表的详细介绍请参阅 CREATE ODBC TABLE 语法帮助手册。
这里仅通过示例说明使用方式。
-
创建 ODBC Resource
ODBC Resource 的目的是用于统一管理外部表的连接信息。
SQL1CREATE EXTERNAL RESOURCE `oracle_odbc` 2PROPERTIES ( 3 "type" = "odbc_catalog", 4 "host" = "192.168.0.1", 5 "port" = "8086", 6 "user" = "test", 7 "password" = "test", 8 "database" = "test", 9 "odbc_type" = "oracle", 10 "driver" = "Oracle" 11);这里我们创建了一个名为
oracle_odbc的 Resource,其类型为odbc_catalog,表示这是一个用于存储 ODBC 信息的 Resource。odbc_type为oracle,表示这个 OBDC Resource 是用于连接 Oracle 数据库的。关于其他类型的资源,具体可参阅 资源管理 文档。 -
创建外部表
SQL1CREATE EXTERNAL TABLE `ext_oracle_tbl` ( 2 `k1` decimal(9, 3) NOT NULL COMMENT "", 3 `k2` char(10) NOT NULL COMMENT "", 4 `k3` datetime NOT NULL COMMENT "", 5 `k5` varchar(20) NOT NULL COMMENT "", 6 `k6` double NOT NULL COMMENT "" 7) ENGINE=ODBC 8COMMENT "ODBC" 9PROPERTIES ( 10 "odbc_catalog_resource" = "oracle_odbc", 11 "database" = "test", 12 "table" = "baseall" 13);这里我们创建一个
ext_oracle_tbl外部表,并引用了之前创建的oracle_odbcResource。
连接百度云数据库 RDS
-
创建 RDS
可以通过 RDS快速入门教程 创建一个 RDS 示例。
注意:创建 RDS 实例时,
网络类型 -> 选择网络处,需要选择和 PALO 集群相同的网络(VPC)。可用区可以不同。 -
创建资源
Plain Text1CREATE EXTERNAL RESOURCE `rds_odbc` 2PROPERTIES ( 3 "type" = "odbc_catalog", 4 "host" = "mysql56.rdsxxxxx.rds.gz.baidubce.com", 5 "port" = "3306", 6 "user" = "rdsroot", 7 "password" = "12345", 8 "odbc_type" = "mysql", 9 "driver" = "MySQL" 10);需修改其中
host,port,user,password对应的参数。 host port 可以在 RDS 实例信息也查看。user 和 password 需要在 RDS 控制台创建账户后获取。 -
创建外部表
SQL1CREATE EXTERNAL TABLE `mysql_table` ( 2 k1 int, 3 k2 int 4) ENGINE=ODBC 5PROPERTIES ( 6 "odbc_catalog_resource" = "rds_odbc", 7 "database" = "mysql_db", 8 "table" = "mysql_tbl" 9);创建之后,就可以进行查询等操作了。
导入数据
-
创建 PALO 表
这里我们创建一张 PALO 的表,列信息和上一步创建的外部表
ext_oracle_tbl一样:SQL1CREATE EXTERNAL TABLE `doris_tbl` ( 2 `k1` decimal(9, 3) NOT NULL COMMENT "", 3 `k2` char(10) NOT NULL COMMENT "", 4 `k3` datetime NOT NULL COMMENT "", 5 `k5` varchar(20) NOT NULL COMMENT "", 6 `k6` double NOT NULL COMMENT "" 7) 8COMMENT "PALO Table" 9DISTRIBUTED BY HASH(k1) BUCKETS 2; 10PROPERTIES ( 11 "replication_num" = "1" 12);关于创建 PALO 表的详细说明,请参阅 CREATE-TABLE 语法帮助。
-
导入数据 (从
ext_oracle_tbl表 导入到doris_tbl表)SQL1INSERT INTO doris_tbl SELECT k1,k2,k3 FROM ext_oracle_tbl limit 100;INSERT 命令是同步命令,返回成功,即表示导入成功。
注意事项
- 必须保证外部数据源与 PALO 集群在同一个VPC内,并且 Compute Node 可以和外部数据源的网络是互通的。
- ODBC 外部表本质上是通过单一 ODBC 客户端访问数据源,因此并不合适一次性导入大量的数据,建议分批多次导入。
