当前位置: 首页 > news >正文

SQL数据迁移实战:从产品层级信息到AB测试表

文章目录

    • 创建表
    • 插入数据
    • 清空数据表
    • 数据迁移和筛选
    • 查询数据
    • 结论

创建表

首先,代码中定义了两个表格:dim_prod_hierarchy_info 和 app_abtest_product_info,都位于 test 数据库中。

  • dim_prod_hierarchy_info 表用于存储产品层级信息,有三列:hier_node_level_1_name, hier_node_level_2_name, hier_node_level_3_name。这些列分别存储产品的不同层级名称。
  • app_abtest_product_info 表用于存储产品信息,也有三列:prod_level_1, prod_level_2, prod_level_3,与第一个表的列功能类似。

sql:

CREATE TABLE test.dim_prod_hierarchy_info (hier_node_level_1_name VARCHAR(255),hier_node_level_2_name VARCHAR(255),hier_node_level_3_name VARCHAR(255)
);CREATE TABLE test.app_abtest_product_info (prod_level_1 VARCHAR(255),prod_level_2 VARCHAR(255),prod_level_3 VARCHAR(255)
);

插入数据

接着,代码通过 INSERT INTO 语句向 dim_prod_hierarchy_info 表中插入了几行数据。这些数据代表不同类别的产品及其层级。

代码如下:

INSERT INTO test.dim_prod_hierarchy_info (hier_node_level_1_name, hier_node_level_2_name, hier_node_level_3_name) VALUES
('SmartPhone', 'Galaxy S21', 'S21 Ultra'),
('Tablet', 'Galaxy Tab', 'Tab S7'),
('SmartWatch', 'Galaxy Watch', 'Watch 3'),
('Earbuds', 'Galaxy Buds', 'Buds Live');

清空数据表

在向 app_abtest_product_info 表插入数据之前,代码使用 DELETE FROM 语句删除了该表中的所有现有数据。这确保了表中没有旧数据。

DELETE FROM test.app_abtest_product_info WHERE 1=1;

数据迁移和筛选

最后,使用 INSERT INTO … SELECT 语句,从 dim_prod_hierarchy_info 表中选取特定的数据行,并将这些数据插入到 app_abtest_product_info 表中。这个查询只选择那些符合特定条件的行:hier_node_level_1_name 字段必须是预定义的产品类别之一,且 hier_node_level_3_name 不能为空。

INSERT INTO test.app_abtest_product_info(prod_level_1, prod_level_2, prod_level_3)
SELECT hier_node_level_1_name, hier_node_level_2_name, hier_node_level_3_name
FROM test.dim_prod_hierarchy_info
WHERE hier_node_level_1_name IN ('SmartPhone', 'Tablet', 'SmartWatch', 'Earbuds')AND hier_node_level_3_name IS NOT NULL
GROUP BY hier_node_level_1_name, hier_node_level_2_name, hier_node_level_3_name;

查询数据

最后,使用一个简单的 SELECT * FROM 查询来查看 dim_prod_hierarchy_info 表中的数据。

代码如下:

SELECT * FROM test.dim_prod_hierarchy_info;

结论

通过这个示例,用户可以学习如何创建和操作SQL表,包括如何插入、删除和迁移数据。这是数据库管理和数据分析中的一个重要技能,可以应用于各种实际场景。

相关文章:

  • 时序预测 | Python实现TCN时间卷积神经网络价格预测
  • 数据爬取+数据可视化实战_哪里只得我共你(Dear Jane)_词云展示----网易云
  • 关于电脑提示vcruntime140_1.dll无法继续执行代码的解决办法
  • MySQL在Docker容器中的性能损失分析与优化策略
  • 【技术分享】远程透传网关-单网口快速实现西门子S7-200 串口PLC程序远程上下载
  • 可观测性项目开发与学习ing
  • Golang数据类型(数字型)
  • 订单场景-基于Redisson实现订单号生成
  • 学习笔记-接口测试(postman、jmeter)
  • Windows核心编程 远程线程注入
  • [个人笔记] Linux的CLI笔录
  • 解释 RESTful API,以及如何使用它构建 web 应用程序
  • 安装skimage包 python
  • 大数据-之LibrA数据库系统告警处理(ALM-37017 数据库连接数超限)
  • 【libGDX】加载G3DJ模型
  • Java 23种设计模式 之单例模式 7种实现方式
  • java2019面试题北京
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • java取消线程实例
  • LeetCode29.两数相除 JavaScript
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • opencv python Meanshift 和 Camshift
  • python大佬养成计划----difflib模块
  • 不上全站https的网站你们就等着被恶心死吧
  • 当SetTimeout遇到了字符串
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 精彩代码 vue.js
  • 利用DataURL技术在网页上显示图片
  • 前端代码风格自动化系列(二)之Commitlint
  • 双管齐下,VMware的容器新战略
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • %check_box% in rails :coditions={:has_many , :through}
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (floyd+补集) poj 3275
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (Matlab)使用竞争神经网络实现数据聚类
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (转)一些感悟
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • .gitignore文件_Git:.gitignore
  • .net core开源商城系统源码,支持可视化布局小程序
  • .Net Remoting常用部署结构
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .NET 中 GetProcess 相关方法的性能
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • @RequestBody与@ResponseBody的使用