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