Импортировать все файлы в таблицу, переместить существующие записи в предыдущую и заархивировать

#sql-server

#sql-сервер

Вопрос:

У меня есть таблица, содержащая около дюжины таблиц и соответствующие им текстовые файлы, которые импортируются каждую неделю. Таблица WEEKLYFILES содержит поля TABLENAME и FILENAME.

Вот что мне нужно сделать…

Просмотрите таблицу имен таблиц и для каждой таблицы возьмите существующую таблицу, скажем, «MYSTUFF» и

1) Переместите данные из MYSTUFF_previous в MYSTUFF_archive

2) Переместить данные из MYSTUFF в MYSTUFF_previous

3) Импортируйте новые данные в текстовый файл C:mystuff.txt в MYSTUFF

Каким-то образом я должен сделать что-то вроде:

 SELECT @TABLENAME = TABLENAME, @FILENAME = FILENAME FROM WEEKLYFILES
  

и затем для каждой записи сделайте что-то вроде

 INSERT INTO @TABLENAME_archive SELECT * FROM @TABLENAME_previous
  

— Скопировать существующие данные в предыдущую:

 TRUNCATE TABLE @TABLENAME_previous; 

INSERT INTO @TABLENAME_previous SELECT * FROM @TABLENAME
  

затем для загрузки нового текстового файла используйте Bulk Insert для загрузки текущей таблицы после ее очистки

 TRUNCATE TABLE @TABLENAME; 

BULK INSERT @TABLENAME FROM @FILENAME WITH 
 ( 
    FIELDTERMINATOR =',', 
     ROWTERMINATOR ='n' 
);