Как использовать Bulk insert для вставки удаленных записей обратно в базу данных SQL Server - PullRequest
0 голосов
/ 06 ноября 2019

Я создал задание по удалению записей в базе данных по некоторым критериям, это прекрасно работает. Фактически, задание копирует записи в файл, а затем удаляет их. Это означает, что у меня всегда есть копия удаленных данных.

Однако, и в случае, если удаленные данные необходимо восстановить обратно в базу данных. Мне нужно вставить записи обратно в то же место, где они были удалены. Это означает, что вставка не должна работать так, как будто я вставляю новые записи. Это возможно? и если да, как это сделать?

Это код SQL для удаления записей из базы данных:

delete from table_1 
where Table_1ID IN (select distinct Table_2ID
                    from Table_2 T2
                    left join
                        (select *
                         from Table3) x on T2.Table_2ID = x.Table_2ID 
                    where ((x.Table3ID is null and T2.DateTime < '2018-12-12') 
                           or x.ExpireDate < '2018-12-12')) 

Declare @cmd varchar(1000);

select @cmd = 'bcp "select * from ##DeletedTable_1" queryout '
        + '"D:\Test\Deleted' 
        + convert(varchar(10), getdate(), 112)    -- YYYYMMDD
        + replace(convert(varchar(10), getdate(), 108), ':', '') -- HHMMSS
        + '.txt" -t, -c -T'


print @cmd

, когда данные импортируются в текстовый файл. Это выглядит так:

144132,3,422,113,64,69, System, 2009-09-22 14: 20: 05.940,2009-09-22 00: 00: 00.000,2009-09-22 14:20: 05.940,2009-09-23 13: 49: 50.920, - Луиза, 000000001C5677E2

, поэтому вокруг строк нет кавычек. и мне интересно, если это будет проблемой?

Я пытался сделать следующее, но это не сработало.

BULK INSERT mydb.table_1
FROM 'D:\Test\Deleted'

Любое предложение приветствуется

...