mysql - 使用条件检查重复从 Excel 导入 SQL
问题描述
我有大量数据存储在 PDF 文件中,我想将其转换为 SQL 数据库。我可以使用一些在线工具从 PDF 文件中提取表格。我也知道如何将它导入 MySQL。但:
该列表包含具有姓名、出生日期和其他一些属性的用户。用户也可能存在于其他 PDF 文件中。因此,当我将下一个文件转换为 Excel 并将其导入 MySQL 时,我想检查该用户是否已存在于我的表中。这应该基于几个属性来完成——我们可能有相同的用户名,但出生日期不同,这可能是一个新记录。但是,如果所有选定的属性都匹配,则该特定用户将是重复的,不应导入。
我想这是我可以用临时表的副本做的事情,但不确定应该选择什么。假设用户名存储在 A 列中,出生日期存储在 B 列中,城市存储在 C 列中。如果所有三个都与现有记录匹配,那么在现有表中验证这些并跳过复制的正确脚本是什么?
谢谢!
解决方案
1-创建一个永久表
Create table UploadData
(
id int not null AUTO_INCREMENT,
name varchar(50),
dob datetime,
city varchar(30)
)
2- 将 Excel 中的数据导入 SQL 数据库。这就是您在下面提到的 Sql Server 中执行此操作的方式,不确定 MySQL,但可能类似。你说你已经知道如何在你的问题中做到这一点,这就是为什么我没有为 MySQL 指定每个步骤
右键单击您的数据库,转到任务 -> 导入数据,从:Microsoft Excel,到:您的数据库名称,选择 UploadData 表,(检查编辑列以确保列匹配),完成从 Excel 上传到您的 SQL D B。
3-检查主表中是否存在数据,如果不存在,请添加。
CREATE TEMPORARY TABLE #matchingData (id int, name varchar(50), dob datetime, city (varchar(30))
INSERT INTO #matchingData
select u.id, u.name, u.dob, u.city
from main_table m
inner join UploadData u on u.name = m=name
and u.dob = m.dob
and u.city = m.city
insert into main_table (name, dob, city)
select name, dob, city
from UploadData
where id not in (select id from #matchingData)
4-不再需要 UploadData 表。所以:DROP TABLE UploadData
推荐阅读
- sql - PostgreSQL 上的查询无法正常工作
- css - 小屏幕上的 Bootstrap col 在 Safari 中具有巨大的差距
- c# - 像素颜色采集或设置不正确
- python - zeep:没有可用于命名空间“urn:WebdialerSoap”的架构
- css - 当专注于 ios 15 时,Textarea 被隐藏
- c# - 如何从列表中断言禁用的选项?
- reactjs - ReactJS - 是否可以替换浏览器历史记录中的项目?
- python-3.x - Django选择过滤的相关对象
- flutter - 为什么 notifyListeners() 不更新消费者?
- java - 加载没有动画的 Gif