跳转至

内表数据导入

本章节将指导您如何将外部数据同步导入到 Aloudata CAN 指标平台中,当前 Aloudata CAN 支持 Starrocks、Doris 两种计算引擎。本文以将数据从PostgreSQL导入StarRocks为例,使用 SMT+DataX 的方式导入数据,接下来将是具体的操作步骤。更多导入方式参考:导入方案

1. 前置条件

  • PostgreSQL 创建一张源表,并导入适量数据。

  • StarRocks环境准备就绪。

  • 下载 DataX 工具 , 地址:DataX

  • 下载 SMT 工具,下载链接:SMT

提示

StarRocks migration tool(简称 SMT)是 StarRocks 提供的数据迁移工具,参考:SMT。本章节使用 SMT快速在 StarRocks 中创建表。

DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台。详情参考:DataX。 本章节使用 DataX 用于实现数据从 PostgreSQL 到 StarRocks 的同步

2. 操作步骤

PG 源表数据

  • 在 PG中创建一张表名称为 user,如下为建表语句
CREATE TABLE `user` (
  `user_id` int(11) NULL COMMENT "",
  `user_name` varchar(50) NULL COMMENT "",
  `sex` varchar(50) NULL COMMENT "",
  `age` int(11) NULL COMMENT "",
  `city` varchar(50) NULL COMMENT ""
)
  • 在表中插入数据
NSERT INTO `user` (`user_id`, `user_name`, `sex`, `age`, `city`) VALUES
(1, 'Alice', 'Female', 28, 'New York'),
(2, 'Bob', 'Male', 34, 'Los Angeles'),
(3, 'Charlie', 'Male', 22, 'Chicago'),
(4, 'Diana', 'Female', 29, 'Houston'),
(5, 'Eve', 'Female', 35, 'Phoenix');

通过 SMT 工具生成 StarRocks 的建表语句

  • 修改 smt 的配置文件
[db]
host = 192.168.1.1
port = 5432
user = xxx
password = xxx
type = pgsql

[other]
# number of backends in StarRocks
be_num = 3
# `decimal_v3` is supported since StarRocks-1.18.1
use_decimal_v3 = false
# directory to save the converted DDL SQL
output_dir = ./result

[table-rule.1]
# pattern to match databases for setting properties
database = db1
# pattern to match tables for setting properties
table = user
# pattern to match schemas for setting properties
schema = public

############################################
### flink sink configurations
### DO NOT set `connector`, `table-name`, `database-name`, they are auto-generated
############################################
flink.starrocks.jdbc-url=jdbc:mysql://192.168.1.1:9030
flink.starrocks.load-url= 192.168.1.1:8030
flink.starrocks.username=root
flink.starrocks.password=
flink.starrocks.sink.max-retries=10
flink.starrocks.sink.buffer-flush.interval-ms=15000
flink.starrocks.sink.properties.format=json
flink.starrocks.sink.properties.strip_outer_array=true
  • 执行 starrocks-migrate-tool,所有建表语句都生成在 result 目录下。
$./starrocks-migrate-tool
$ls result
flink-create.1.sql    smt.tar.gz              starrocks-create.all.sql
flink-create.all.sql  starrocks-create.1.sql 
  • 生成 StarRocks 表结构
mysql -hxx.xx.xx.x -P9030 -uroot -p < starrocks-create.all.sql

准备 DataX 数据导入脚本

创建 DataX 导入脚本配置文件,命名 config.json 

{
    "job": {
        "setting": {
            "speed": {
                "channel": 3
            }
        },
        "content": [
            {
                "reader": {
                    "name": "postgresqlreader",
                    "parameter": {
                        "username": "root",
                        "password": "密码",
                        "connection": [
                            {
                                "table": [
                                    "user"
                                ],
                                "jdbcUrl": [
                                    "jdbc:mysql://127.0.0.1:3306/db1"
                                ]
                            }
                        ],
                        "column": [
                            "*"
                        ]
                    }
                },
                "writer": {
                    "name": "starrockswriter",
                    "parameter": {
                        "username": "root",
                        "password": "密码",
                        "column": ["*"],
                        "preSql": [],
                        "postSql": [],
                        "connection": [
                            {
                                "table": ["user"],
                                "jdbcUrl": "jdbc:mysql://10.15.1.171:9030/",
                            }
                        ],
                        "loadUrl": ["10.15.1.171:8030"],
                        "loadProps": {}
                    }
                }
            }
        ]
    }
}

启动导入任务

python datax.py ./config.json