首页 > 解决方案 > 使用条件检查重复从 Excel 导入 SQL

问题描述

我有大量数据存储在 PDF 文件中,我想将其转换为 SQL 数据库。我可以使用一些在线工具从 PDF 文件中提取表格。我也知道如何将它导入 MySQL。但:

该列表包含具有姓名、出生日期和其他一些属性的用户。用户也可能存在于其他 PDF 文件中。因此,当我将下一个文件转换为 Excel 并将其导入 MySQL 时,我想检查该用户是否已存在于我的表中。这应该基于几个属性来完成——我们可能有相同的用户名,但出生日期不同,这可能是一个新记录。但是,如果所有选定的属性都匹配,则该特定用户将是重复的,不应导入。

我想这是我可以用临时表的副本做的事情,但不确定应该选择什么。假设用户名存储在 A 列中,出生日期存储在 B 列中,城市存储在 C 列中。如果所有三个都与现有记录匹配,那么在现有表中验证这些并跳过复制的正确脚本是什么?

谢谢!

标签: mysqlsqlexcelimportduplicates

解决方案


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


推荐阅读