ETL - 准备数据库

前(fei)言(hua)

为了接下去的教程,我们需要先准备数据库,通过新旧数据库的迁移,来演示如何使用 PDI 工具。让我们创建如下数据库结构:

旧数据库:

订单表:

CREATE TABLE `order`  (
  `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `code` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '订单编码',
  `order_status` tinyint(2) UNSIGNED NOT NULL DEFAULT 1 COMMENT '1待付款 2待发货 3待收货 4已收货 5已取消',
  `name` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '',
  `phone_number` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `status` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '状态 0删除 1正常 ',
  `created_at` bigint(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '创建时间',
  `updated_at` bigint(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE
) ;

订单商品表:

CREATE TABLE `order_goods`  (
  `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `orders_id` int(10) UNSIGNED NOT NULL DEFAULT 0,
  `goods_name` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '商品名称',
  `goods_num` smallint(5) UNSIGNED NOT NULL DEFAULT 1 COMMENT '购买数量',
  `price` decimal(10, 2) NOT NULL DEFAULT 0.00 COMMENT '商品售价',
  `status` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '状态 0删除 1正常',
  `created_at` bigint(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '创建时间',
  `updated_at` bigint(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE
);

新数据库:

客户表:

CREATE TABLE `client`  (
  `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `name` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '',
  `phone_number` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `status` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '状态 0删除 1正常 ',
  `created_at` bigint(11) UNSIGNED NOT NULL DEFAULT 0,
  `updated_at` bigint(11) UNSIGNED NOT NULL DEFAULT 0,
  PRIMARY KEY (`id`) USING BTREE
);

订单表:

CREATE TABLE `order`  (
  `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `code` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '订单编码',
  `order_status` tinyint(2) UNSIGNED NOT NULL DEFAULT 1 COMMENT '1待付款 2待发货 3待收货 4已收货 5已取消',
  `client_id` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '用户id',
  `status` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '状态 0删除 1正常 ',
  `created_at` bigint(11) UNSIGNED NOT NULL DEFAULT 0,
  `updated_at` bigint(11) UNSIGNED NOT NULL DEFAULT 0,
  PRIMARY KEY (`id`) USING BTREE
)

订单商品表:

CREATE TABLE `order_goods`  (
  `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `orders_id` int(10) UNSIGNED NOT NULL DEFAULT 0,
  `goods_name` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '商品名称',
  `goods_num` smallint(5) UNSIGNED NOT NULL DEFAULT 1 COMMENT '购买数量',
  `price` decimal(10, 2) NOT NULL DEFAULT 0.00 COMMENT '商品售价',
  `status` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '状态 0删除 1正常',
  `created_at` bigint(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '创建时间',
  `updated_at` bigint(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE
)

订单商品表结构没变,唯一注意到是我们把订单表中的客户姓名和联系方式分离开来,然后和新的订单表进行关联。这是本课程的重点,也是这工具一个强大的地方。
数据库结构创建完后,可以自己填充一些测试数据,或者你也可以点击链接下载我准备好的 SQL文件。
在准备好数据库,并确保能运行后,就开始进入下一节使用我们的工具吧。

上一篇:Hive| ETL清洗& 查询练习


下一篇:【ODI】| 数据ETL:从零开始使用Oracle ODI完成数据集成(三)