使用大容量插入将已删除的记录插入回SQL Server数据库
我已经创建了一个作业,根据一些标准删除数据库中的记录,这个工作很好。事实上,作业会在删除记录之前将其复制到文件中。这意味着我总是有一份已删除数据的副本 但是,如果需要将已删除的数据恢复回数据库中。我需要将记录插入到已删除的位置。这意味着插入不应该像插入新记录一样工作。可能吗?如果是,怎么做 这是从数据库中删除记录的SQL代码:使用大容量插入将已删除的记录插入回SQL Server数据库,sql,sql-server,bulkinsert,bcp,Sql,Sql Server,Bulkinsert,Bcp,我已经创建了一个作业,根据一些标准删除数据库中的记录,这个工作很好。事实上,作业会在删除记录之前将其复制到文件中。这意味着我总是有一份已删除数据的副本 但是,如果需要将已删除的数据恢复回数据库中。我需要将记录插入到已删除的位置。这意味着插入不应该像插入新记录一样工作。可能吗?如果是,怎么做 这是从数据库中删除记录的SQL代码: delete from table_1 where Table_1ID IN (select distinct Table_2ID
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
因此字符串周围没有引号。我想知道这是否会成为一个问题
我试着做了以下几件事,但没有成功
BULK INSERT mydb.table_1
FROM 'D:\Test\Deleted'
感谢您的任何建议您能解释一下“它不起作用”是什么意思吗。如果您有错误,请将其包括在内。是否成功,但未插入任何记录?没有发生任何事情,您不知道状态是什么吗?当我尝试执行大容量插入消息2809,级别16,状态1,第1行时,出现以下错误。对过程“Table_1”的请求失败,因为“Table_1”是表对象。“mydb”是数据库名称还是架构名称?如果它是一个数据库名称,那么您就没有提到“mydb”和“table_1”之间的模式。@jamie,您是对的,我必须添加模式名称,但是这并没有解决从平面文件插入数据的问题。也就是说,我仍然无法插入行。您需要阅读“批量插入”命令。它具有可指定的各种参数/选项的默认值/假定值。我相信字段终止符的默认值是“tab”。但是您的文件是逗号删除的,并且您没有使用“批量插入”命令指定任何选项吗?
BULK INSERT mydb.table_1
FROM 'D:\Test\Deleted'