Миграция базы данных SQL: сопоставление существующих столбцов, если их нет в новой базе данных — создание новых столбцов

#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
                     );