Импорт денормализованных CSV-файлов в таблицы производственной базы данных - PullRequest
0 голосов
/ 29 октября 2019

Еще раз спасибо. Пожалуйста, найдите мои образцы данных ниже.

  1. Данные испытаний получены из файла CSV. LandId - это отношение M: M к таблице заголовков.
  2. Таким образом, для определенного идентификатора TitleID будет только один landId, но с одним идентификатором земли может быть связано много TitleID.
  3. Существует мосттаблица с именем ## land_title между таблицей заголовков и таблицей земель.
  4. По сути, я хочу добавить записи из csv в существующие записи в таблице земель, а затем вставить соответствующие значения в ## land_title, а затем в таблицу заголовков.
  5. Я пробовал этот метод, но мне нужна помощь от вас, ребята. Надеюсь, что это имеет смысл.

 INSERT INTO ##land_title( LandId, titleid, CreatedDateTime, CreatedUserID )
     SELECT LandID, Land_TitleID, getdate(),'xyz'
    FROM #Testdata as sd
 OUTPUT inserted or SCOPE_IDENTITY()


 CREATE TABLE #Testdata
 (
     LandID INT,
     ReferenceID INT,
     Land_TitleID VARCHAR(MAX)
 )
 INSERT #Testdata SELECT 1,  9, '18,20,22'
 INSERT #Testdata SELECT 2,  8, '17,19'
 INSERT #Testdata SELECT 3,  7, '13,19,20'
INSERT #Testdata SELECT 4,  6, ''
INSERT #Testdata SELECT 9, 11, '1,2,3,4'
Select * from #Testdata
;WITH tmp(LandID, ReferenceID, DataItem, Land_TitleID) AS
(
    SELECT
        LandID,
        ReferenceID,
        LEFT(Land_TitleID, CHARINDEX(',', Land_TitleID + ',') - 1),
        STUFF(Land_TitleID, 1, CHARINDEX(',', Land_TitleID + ','), '')
    FROM #Testdata
    UNION all
    SELECT
        LandID,
        ReferenceID,
        LEFT(Land_TitleID, CHARINDEX(',', Land_TitleID + ',') - 1),
        STUFF(Land_TitleID, 1, CHARINDEX(',', Land_TitleID + ','), '')
    FROM tmp
    WHERE
        Land_TitleID > ''
)
SELECT
    LandID,
    ReferenceID,
    DataItem
FROM tmp
ORDER BY LandID

Спасибо

R

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...