Сервер Sql, вставьте данные в две таблицы, заполните одну перед другой - PullRequest
0 голосов
/ 30 октября 2019

Мой первый пост здесь, когда я начинаю новую работу, где мои старые навыки sql уже проходят тестирование - я также не являюсь опытным пользователем ранее. Я полагаю, что здесь уже могут быть некоторые ответы, которые могут отвечать на мой вопрос, но я все еще немного незнаком - как с форумом, так и с более сложным синтаксисом sql. Некоторые ответы тоже довольно старые. И - извините меня за любые грамматические ошибки.

В любом случае, если кто-нибудь сможет помочь.

Я получу огромные списки (.csv или аналогичные) с вводом данных. Списки данных будут содержать поля для типа данных о клиенте (имя, адрес и т. Д.) И поля для типа данных о недвижимости / недвижимости (адрес, идентификатор здания и т. Д.).

Данные о клиенте и свойства должны быть помещены в две отдельные таблицы.

Моя проблема заключается в следующем: - Эти две таблицы зависят друг от друга, так как в таблице propertydata необходимо заполнить данныево-первых, который сгенерирует уникальный GUID - который снова будет использоваться при заполнении таблицы customerdata - для подключения клиента к правильному свойству / недвижимости.

Первое, что пришло в голову, это заполнить все данные ввременная таблица.

Но я не совсем уверен, как пройтись по каждой строке, поэтому я проверяю, что сначала заполняется таблица свойств, а затем таблица пользователя с использованием GUID.

  1. Получить данные, которыевключает в себя propertydata и заполняет таблицу свойств
  2. Получите уникальный GUID, сгенерированный в таблице свойств
  3. Получите данные, которые включают customerdata, и заполните таблицу customer - с правильным GUID
  4. Loop through restдо тех пор, пока не останется больше строк с данными.

I гаВы видели некоторые вещи, такие как транзакции, курсоры, вывод и т. д., которые, по-видимому, входят в сферу моей компетенции, но не уверены, что будет лучшим способом решения моей задачи? Я рядом с чем-то, когда я так думаю?

РЕДАКТИРОВАТЬ:
Это примеры полей, которые будут представлены в виде одной строки в формате .xlsx / .csv. Количество строк в таком списке будет время от времени меняться.

  1. Код недвижимости
  2. Адрес недвижимости
  3. Код здания(только одно)
  4. Дата создания объекта
  5. ... Прочие поля, связанные с недвижимостью
  6. Идентификатор клиента
  7. Имя клиента
  8. Адрес клиента
  9. Почтовый индекс
  10. ... Разные поля, связанные с клиентом

Поля с 1 по 5 должны будут сначала заполнить таблицу свойств. Когда каждая строка в таблице свойств заполняется, она генерирует уникальный GUID. Затем поля с 6 по 10 будут использоваться для заполнения таблицы клиентов, но также должны быть заполнены соответствующим уникальным GUID, созданным выше в таблице свойств.

Таблица свойств:

  1. ID объекта
  2. Адрес объекта
  3. Идентификатор объекта недвижимости (только один)
  4. Дата создания объекта
  5. ... Прочие поля, связанные с другим свойством
  6. УНИКАЛЬНЫЙ ПРАВИЛА СОБСТВЕННОСТИ (создается при заполнении каждой новой строки в таблице)

Таблица клиентов:

РУКОВОДСТВО ПО УНИКАЛЬНОЙ СОБСТВЕННОСТИ Идентификатор клиента
Имя клиента
Адрес клиента
Почтовый индекс
... Прочие поля, связанные с клиентами

1 Ответ

0 голосов
/ 31 октября 2019

Я предлагаю вам использовать промежуточную таблицу.

  1. Загрузить все данные в промежуточную / временную таблицу и назначить номера GUID для каждой строки.
  2. Скопировать сведения о свойствах из промежуточной таблицы втаблица свойств, получающая GUID из промежуточной таблицы
  3. Копирование сведений о клиенте из промежуточной таблицы в таблицу клиентов с использованием GUID из промежуточной таблицы.
  4. Удаление данных в промежуточной таблице.

Быстрый пример:

INSERT INTO PropertyDetails( GUID, PropertyID, PropertyAddress, ... )
SELECT GUID, PropertyID, PropertyAddress, ...
FROM StagingTable

INSERT INTO CustomertDetails( GUID, CustomerID, CustomerName, ... )
SELECT GUID, PropertyID, PropertyAddress, ...
FROM StagingTable
...