#sql #sql-server #database #migration
#sql #sql-server #База данных #миграция
Вопрос:
У меня есть таблица информации, относящаяся к адресам, которые я хочу перенести из моей текущей базы данных в новую. Я хочу сопоставить адреса в Line1, Line2 и почтовый индекс, и если какие-либо из них не совпадают, я хочу создать новый адрес в базе данных, на которую я переношу.
Пока у меня есть промежуточная база данных, я импортирую все данные из исходной базы данных, затем мне нужно написать SQL-скрипт для запуска перед импортом в новую базу данных.
Пока у меня есть:
Use Staging_DB
GO
IF EXISTS (SELECT 1 FROM sys.tables WHERE name = 'Address'
DROP TABLE Address
CREATE TABLE Address(
AddressLine1 varchar(60),
AddressLine2 varchar(60),
…. и так далее
Любая помощь была бы очень признательна
Комментарии:
1. Вы помечаете вопрос как связанный с MySQL, тогда как используете синтаксис SQL для SQL Server (MS SQL). Уточните свою СУБД.
2. Поле — неподходящее слово в разделе RDBMS. Я думаю, вы имеете в виду «столбец»?
3. Можете ли вы предоставить образцы данных и желаемые результаты?
Ответ №1:
Если я правильно понимаю, вы хотите вставить новые адреса в существующую таблицу — но только адреса, которые не существуют.
Если это так:
insert into address (line1, line2, postcode)
select line1, line2, postcode
from staging s
where not exists (select 1
from address a
where a.line1 = s.line1 and a.line2 = s.line2 and a.postcode = s.line2
);