Импорт из Excel в SQL с условной проверкой на наличие дубликатов - PullRequest
0 голосов
/ 05 марта 2019

У меня есть огромное количество данных, хранящихся в файлах PDF, которые я хотел бы преобразовать в базу данных SQL.Я могу извлечь таблицы из файлов PDF с помощью некоторых онлайн-инструментов.Я также знаю, как импортировать это в MySQL.НО:

Список содержит пользователей с именами, датами рождения и некоторыми другими свойствами.Пользователь может существовать и в других файлах PDF.Поэтому, когда я собираюсь преобразовать следующий файл в Excel и импортировать его в MySQL, я хочу проверить, существует ли этот пользователь в моей таблице.И это должно быть сделано на основе нескольких свойств - у нас может быть одно и то же имя пользователя, но с другой датой рождения, что может быть новой записью.Но если все выбранные свойства совпадают, то этот конкретный пользователь будет дубликатом и не должен быть импортирован.

Я думаю, это то, что я могу сделать с копией из временной таблицы, но не уверен, какой выбор должен быть,Допустим, имя пользователя хранится в столбце A, дата рождения - в столбце B, а город - в столбце C. Какой будет правильный сценарий, чтобы проверить их в существующей таблице и пропустить копию, если все три соответствуют существующей записи?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 13 марта 2019

Добавление ограничений первичного ключа к столбцу A, столбцу B и столбцу C

Это позволит избежать дублирования строк, но может иметь одинаковые значения в одном столбце.

Примечание. Максимальное ограничениеколичество первичных ключей в конкретной таблице.

0 голосов
/ 05 марта 2019

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.

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 - Больше нет необходимости загружать таблицу данных. Итак: DROP TABLE UploadData

...