Я создал задание по удалению записей в базе данных по некоторым критериям, это прекрасно работает. Фактически, задание копирует записи в файл, а затем удаляет их. Это означает, что у меня всегда есть копия удаленных данных.
Однако, и в случае, если удаленные данные необходимо восстановить обратно в базу данных. Мне нужно вставить записи обратно в то же место, где они были удалены. Это означает, что вставка не должна работать так, как будто я вставляю новые записи. Это возможно? и если да, как это сделать?
Это код 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'
Любое предложение приветствуется