Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用大容量插入将已删除的记录插入回SQL Server数据库_Sql_Sql Server_Bulkinsert_Bcp - Fatal编程技术网

使用大容量插入将已删除的记录插入回SQL Server数据库

使用大容量插入将已删除的记录插入回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

我已经创建了一个作业,根据一些标准删除数据库中的记录,这个工作很好。事实上,作业会在删除记录之前将其复制到文件中。这意味着我总是有一份已删除数据的副本

但是,如果需要将已删除的数据恢复回数据库中。我需要将记录插入到已删除的位置。这意味着插入不应该像插入新记录一样工作。可能吗?如果是,怎么做

这是从数据库中删除记录的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
因此字符串周围没有引号。我想知道这是否会成为一个问题

我试着做了以下几件事,但没有成功

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'