【mysql项目】模拟银行数据合并,一个身份证号可开通多个银行的信用卡的数据

本文介绍了如何处理从不同银行获取的信用卡数据,通过合并与去重操作,将20万条数据整合成18万条不重复的身份证号记录。在CentOS 7.5上使用MySQL 5.7.23数据库,设计了ODS、DW和DM表结构,详细展示了银行表、原始数据表、DW数据表和DM展示表的创建过程,以及存储过程的编写和执行,用于数据整合和去重。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求

拉取过来的数据(比如浦发,兴业,农行等),格式如:

兴业:

手机号,姓名,开通信用卡功能(10万条)

浦发:

手机号,姓名,开通信用卡功能(10万条)

......

 

将上面的数据合并,因为每个身份证号有可能在多家银行开有信用卡,需要将20万条数据,假如这时只有18万不重复身份证号的数据。

数据效果展示

原始数据(黄色底为重复身份证号的数据):

工商银行(共20条)

 

农业银行(共20条)

 

去重后的数据:

此时因为有五个身份证号在两个银行开通了信用卡业务,故该五个身份证在两个表中都存在,去重后剩下35数据,并记录开通的银行业务名称。

 

基础表:

 

备注:对于身份证、手机号和姓名等敏感数据均从网络随机生成,如有雷同纯属巧合。
 

数据存放的环境

系统版本:CentOS 7.5

数据库:MySQL 5.7.23

 

  1. 数据库设计

    1. 设计概述

ODS表为原始数据,数据从客户业务系统拉取,包含中文数据;

DW表去掉中文后的数据,数据从ODS表获取;

DM为展示的数据,即系统最后需求的数据;

T为基础表。

银行表:t_bank

原始数据表:

ods_bankData_gs,ods_bankData_ny,ods_bankData_zg,ods_bankData_js……

DW数据表:

dw_bankData_gs,dw_bankData_ny,dw_bankData_zg,dw_bankData_js……

DM展示表:dm_bankFor

 

    1. 具体设计

#创建数据库

create database dbBank;

/*

需求:

拉取过来的数据(比如浦发,兴业,农行等),格式如:

兴业:

手机号,姓名,开通信用卡功能(10万条)

浦发:

手机号,姓名,开通信用卡功能(10万条)

......

 

将上面的数据合并,因为每个身份证号有可能在多家银行开有信用卡,需要将20万条数据,假如这时只有18万不重复身份证号的数据

*/

 

#################################################

##################    BASE     ##################

#################################################

 

/*银行表:t_bank

序号,代码,银行名,银行简写

bankId

bankCode

bankName

ava+SQL信用卡管理系统源代码,MSSQL数据库,比较复杂,新手调试可能会遇到问题,附有Java源代码,仅供学习参考。 Java+SQL信用卡管理系统源代码 (1 folders, 2 files, 1.38 KB, 3.52 MB in total.)         源码 (1 folders, 2 files, 1.38 KB, 3.52 MB in total.)               信用卡管理系统SQL (4 folders, 17 files, 2.21 MB, 3.52 MB in total.)       card.jpx 9.58 KB       card.jpx.local 3.02 KB       card.jpx.local~ 3.02 KB       cardSystem_Data.MDF 1.13 MB       cardSystem_Log.LDF 1.00 MB       hs_err_pid1392.log 7.06 KB       hs_err_pid2360.log 6.88 KB       hs_err_pid2756.log 7.06 KB       hs_err_pid2804.log 7.05 KB       hs_err_pid2932.log 6.88 KB       hs_err_pid3152.log 7.06 KB       hs_err_pid3548.log 7.05 KB       hs_err_pid3856.log 7.06 KB       hs_err_pid512.log 6.88 KB       hs_err_pid748.log 7.05 KB                      bak (1 folders, 2 files, 1.38 KB, 208.28 KB in total.)                        card (0 folders, 67 files, 206.90 KB, 206.90 KB in total.)           cardConnect.java~1~ 1.52 KB           cardConnect.java~2~ 508 bytes           cardConnect.java~3~ 661 bytes           cardConnect.java~4~ 1.01 KB           cardConnect.java~5~ 971 bytes           creditCard.java~1~ 1.53 KB           eventFrame.java~18~ 2.86 KB           eventFrame.java~19~ 3.04 KB           eventFrame.java~20~ 2.98 KB           eventFrame.java~21~ 3.19 KB           eventFrame.java~22~ 3.20 KB           eventFrame.java~23~ 3.20 KB           eventFrame.java~24~ 3.35 KB           eventFrame.java~25~ 3.36 KB           eventFrame.java~26~ 3.36 KB           eventFrame.java~27~ 3.36 KB           getPanel.java~22~ 3.64 KB           getPanel.java~23~ 3.64 KB           getPanel.java~24~ 3.50 KB           getPanel.java~25~ 3.50 KB           getPanel.java~26~ 3.54 KB           getPanel.java~27~ 3.58 KB           getPanel.java~28~ 3.58 KB           getPanel.java~29~ 3.55 KB           getPanel.java~30~ 3.54 KB           getPanel.java~31~ 3.59 KB           loginFrame.java~100~ 6.04 KB           loginFrame.java~101~ 6.29 KB           loginFrame.java~102~ 6.47 KB           loginFrame.java~103~ 6.47 KB           loginFrame.java~104~ 6.64 KB           loginFrame.java~95~ 6.07 KB           loginFrame.java~96~ 6.07 KB           loginFrame.java~97~ 6.07 KB           loginFrame.java~98~ 6.07 KB           loginFrame.java~99~ 6.07 KB                      moveFrameEvent.java~1~ 882 bytes           queryPanel.java~10~ 2.54 KB           queryPanel.java~11~ 2.57 KB           queryPanel.java~12~ 2.58 KB           queryPanel.java~13~ 2.10 KB           queryPanel.java~14~ 2.10 KB           queryPanel.java~15~ 2.08 KB           queryPanel.java~6~ 2.61 KB           queryPanel.java~7~ 2.61 KB           queryPanel.java~8~ 2.61 KB           queryPanel.java~9~ 2.57 KB           staticMessage.java~1~ 1.06 KB           staticMessage.java~2~ 1.08 KB           staticMessage.java~3~ 1.12 KB           staticMessage.java~4~ 1.07 KB           staticMessage.java~5~ 1.07 KB           storePanel.java~15~ 3.43 KB           storePanel.java~16~ 3.43 KB           storePanel.java~17~ 3.43 KB           storePanel.java~18~ 3.52 KB           storePanel.java~19~ 3.52 KB           storePanel.java~20~ 3.47 KB           storePanel.java~21~ 3.52 KB           storePanel.java~22~ 3.52 KB           storePanel.java~23~ 3.49 KB           storePanel.java~24~ 3.53 KB           welcomePanel.java~1~ 1.19 KB           welcomePanel.java~2~ 1.37 KB           welcomePanel.java~3~ 1.47 KB                   classes (2 folders, 2 files, 1.38 KB, 73.03 KB in total.)                         card (0 folders, 27 files, 41.28 KB, 41.28 KB in total.)          cardConnect.class 1.75 KB          creditCard$1.class 714 bytes          creditCard.class 1.16 KB          eventFrame.class 4.17 KB          getPanel$1.class 652 bytes          getPanel$2.class 649 bytes          getPanel$3.class 649 bytes          getPanel.class 4.56 KB          loginFrame$1.class 664 bytes          loginFrame$2.class 618 bytes          loginFrame$3.class 622 bytes          loginFrame$4.class 664 bytes          loginFrame$5.class 618 bytes          loginFrame$6.class 622 bytes          loginFrame$7.class 661 bytes          loginFrame$8.class 661 bytes          loginFrame.class 7.27 KB                    moveFrameEvent.class 1.20 KB          queryPanel.class 2.10 KB          staticMessage.class 1.83 KB          storePanel$1.class 664 bytes          storePanel$2.class 661 bytes          storePanel$3.class 661 bytes          storePanel.class 4.57 KB          welcomePanel.class 1.73 KB                  package cache (0 folders, 3 files, 30.37 KB, 30.37 KB in total.)           card.dep2 28.98 KB                              img (0 folders, 9 files, 1.01 MB, 1.01 MB in total.)         1.jpg 69.44 KB         11.jpg 585.41 KB         img.gif 1.76 KB         l562.png 313.27 KB         log001.gif 24.68 KB         log002.gif 7.21 KB                  Thumbs.db 26.50 KB                src (1 folders, 2 files, 1.38 KB, 29.22 KB in total.)                           card (0 folders, 12 files, 27.84 KB, 27.84 KB in total.)            cardConnect.java 1.14 KB            creditCard.java 1.49 KB            eventFrame.java 3.39 KB            getPanel.java 3.91 KB            loginFrame.java 7.16 KB                        moveFrameEvent.java 917 bytes            queryPanel.java 2.13 KB            staticMessage.java 1.12 KB            storePanel.java 3.85 KB            welcomePanel.java 1.37 KB
<think>好的,用户现在想进行数据治理的实战练习,询问有哪些数据集可以使用。我需要先回顾之前的对话,用户之前问了关于拉链表是否需要每张表都做,现在转向实际操作的数据集选择。 首先,用户可能对数据治理的理论有了一定了解,现在需要实践来巩固。数据治理涵盖数据质量、元数据管理、主数据、安全、合规等多个方面,所以数据集需要覆盖这些方面。 接下来,我需要考虑用户可能的使用场景。可能是学生、刚入行的数据工程师或分析师,或者是企业里需要实施数据治理的人员。他们可能需要真实的或者模拟数据集来进行练习,但真实数据可能难以获取,所以公开数据集或模拟数据会更合适。 用户可能没有明确说明具体的数据治理方向,所以需要推荐涵盖不同方面的数据集。比如数据质量的数据集可能有缺失值、复记录,元数据管理需要结构复杂的数据,主数据可能需要客户、产品信息等。 还要考虑数据集的易获取性和免费资源。Kaggle、UCI、政府开放数据平台都是不错的选择。另外,模拟数据生成工具也很要,因为用户可以自定义数据问题,比如生成有错误的数据来练习清洗。 需要注意用户可能对某些工具或平台不熟悉,所以需要给出具体的例子和链接,方便他们访问。同时,不同行业的数据治理可能有不同特点,比如金融、医疗需要更注合规和安全,所以可以推荐相关领域的数据集。 另外,用户可能希望了解如何应用数据治理工具,比如Apache Atlas、Great Expectations,所以需要结合数据集推荐工具的使用,比如用Great Expectations测试数据质量。 最后,总结时需要强调根据学习目标选择数据集,并建议从简单到复杂逐步深入。可能还需要提醒用户注意数据隐私问题,避免使用真实敏感数据。</think>在数据治理的实战练习中,选择合适的**数据集**和**场景**是关键。以下是适合练习的**数据集推荐**、**应用场景**和**工具建议**,涵盖数据质量、元数据管理、主数据数据安全等方向: --- ### **一、公开数据集推荐** #### **1. 综合型数据集(适合基础治理)** | **数据集** | **来源** | **治理场景** | |-------------------------|------------------------------|-----------------------------------------------------------------------------| | **Kaggle 数据集** | [Kaggle](https://www.kaggle.com/datasets) | 包含大量真实数据(如销售、用户行为),适合练习数据清洗、、标准化。 | | **UCI 机器学习仓库** | [UCI](https://archive.ics.uci.edu/) | 经典结构化数据(如银行客户信息、信用卡交易),适合数据质量分析和分类治理。 | | **政府开放数据平台** | 如[中国政府数据网](https://data.stats.gov.cn/) | 经济、人口等数据,适合主数据管理和元数据建模。 | #### **2. 行业特定数据集** | **数据集** | **治理场景** | |-------------------------|-----------------------------------------------------------------------------| | **金融行业** | - [Lending Club贷款数据](https://www.kaggle.com/wordsforthewise/lending-club) <br> 练习:敏感数据脱敏、合规性检查。 | | **电商行业** | - [Amazon产品评论数据](https://nijianmo.github.io/amazon/index.html) <br> 练习:商品主数据管理、评论数据噪。 | | **医疗行业** | - [MIMIC-III医疗数据集](https://mimic.physionet.org/)(需申请权限)<br> 练习:患者数据隐私保护、元数据标准化。 | #### **3. 模拟数据生成工具** - **Python库**:用 `Faker` 生成模拟用户数据(含地址、电话等),自定义数据质量问题(如缺失值、复记录)。 - **数据库工具**:使用 `MySQL` 或 `PostgreSQL` 创建包含复杂关联的表,模拟数据与交易数据的关系。 --- ### **二、实战场景与工具** #### **1. 数据质量管理** - **数据集示例**:包含缺失值、异常值、格式混乱的数据(如用户注册表、订单表)。 - **练习任务**: - 使用 `Great Expectations` 或 `Python Pandas` 定义数据质量规则(如字段非空、值域校验)。 - 修复数据问题并生成质量报告。 - **工具参考**: ```python # 示例:用 Pandas 检测缺失值 import pandas as pd df = pd.read_csv("user_data.csv") print(df.isnull().sum()) ``` #### **2. 元数据管理** - **数据集示例**:多表关联的数据库(如电商系统的订单、商品、用户表)。 - **练习任务**: - 使用 `Apache Atlas` 或 `DataHub` 构建元数据血缘图谱。 - 标注敏感字段(如手机号、身份证)并定义访问权限。 - **工具参考**: ```bash # 使用 DataHub 进行元数据采集 datahub ingest -c recipe.yml ``` #### **3. 主数据管理** - **数据集示例**:企业客户表(含复客户、不一致的地址信息)。 - **练习任务**: - 使用 `Talend` 或 `Python RecordLinkage` 进行客户数据合并。 - 定义唯一客户ID和主数据模型。 #### **4. 数据安全与合规** - **数据集示例**:含敏感信息的员工表(如薪资、健康状况)。 - **练习任务**: - 使用 `OpenGDPR` 或脚本实现数据脱敏(如姓名替换为哈希值)。 - 模拟数据访问审计日志,追踪异常查询行为。 --- ### **三、开源工具与平台** | **工具** | **用途** | **学习资源** | |-----------------------|-----------------------------------|--------------------------------------------| | **Apache Atlas** | 元数据管理与血缘分析 | [官方文档](https://atlas.apache.org/) | | **Great Expectations**| 数据质量校验 | [快速入门](https://docs.greatexpectations.io/) | | **OpenMetadata** | 元数据数据目录 | [GitHub](https://github.com/open-metadata/OpenMetadata) | | **DataHub** | 端到端元数据管理 | [官方教程](https://datahubproject.io/docs/) | --- ### **四、自建练习项目** #### **1. 电商数据治理沙箱** - **数据内容**:订单表(含用户ID、商品ID、金额)、用户表(含地址、电话)、商品表(含分类、价格)。 - **治理任务**: - 主数据管理:合并复商品信息。 - 数据质量:检测订单金额异常(如负值、超范围值)。 - 元数据:构建订单-商品-用户的血缘关系。 #### **2. 金融风控数据治理** - **数据内容**:贷款申请表(含收入、职业)、交易流水表。 - **治理任务**: - 敏感数据脱敏:隐藏用户身份证号。 - 合规检查:确保数据存储符合GDPR或《个人信息保护法》。 --- ### **五、学习路径建议** 1. **入门阶段**:用 Kaggle 数据集练习数据清洗和质量分析。 2. **进阶阶段**:通过模拟数据练习元数据管理和主数据合并。 3. **实战阶段**:在本地部署工具(如DataHub+Apache Atlas),构建端到端治理流程。 --- ### **六、注意事项** - **避免真实敏感数据**:练习时使用脱敏数据模拟数据。 - **从简单到复杂**:先解决单表问题(如),再处理多表关联场景。 - **结合工具文档**:边实践边查阅工具官方指南。 如果需要具体场景的代码示例或工具配置步骤,可以进一步细化方向(如“如何用Great Expectations校验数据质量”)!
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值