从一个MS Access数据库插入另一个MS Access数据库

时间:2016-05-18 12:28:48

标签: c# database ms-access duplicates insert-into

我必须将数据从MS Access DB转移到另一个。 这是使用的插入语句

 cmd.CommandText = @"Insert Into [MS Access;PWD=pw;DATABASE=" + currentDBPath + @"].[Orders]  Select   *  FROM  [Orders]  where OrderDate>=#" + from.ToShortDateString() + "# and  OrderDate <=#" + to.ToShortDateString() + "# and  IsCustomer=Yes  ";

此声明正常。但是有些人开始直接将数据输入到目标数据库和源数据库中。这创建了重复的记录。现在我想从源中复制那些不在目标DB表中的命令。

2 个答案:

答案 0 :(得分:1)

假设Orders表有一个名为IDOrers的主键,则必须将两个表都带到一个DB,以便比较数据。
简易选项:在Sours DB中有一个指向目标数据库[订单]的链接,名为OrdersDest。在这种情况下,您在目标上创建一个名为MissingOrders的缺失订单查询:

SELECT Orders.* FROM Orders LEFT JOIN OrdersDest ON OrdersDest.IDOrders = Orders.IDOrders WHERE OrdersDest.IDOrders Is Null

你的命令现在看起来像这样:

cmd.CommandText = @"Insert Into [MS Access;PWD=pw;DATABASE=" + currentDBPath + @"].[Orders]  Select   *  FROM  [MissingOrders]  where OrderDate>=#" + from.ToShortDateString() + "# and  OrderDate <=#" + to.ToShortDateString() + "# and  IsCustomer=Yes ";

您还可以通过此链接表传递数据:

cmd.CommandText = @"Insert Into [OrdersDest]  Select * FROM [MissingOrders]  where OrderDate>=#" + from.ToShortDateString() + "# and  OrderDate <=#" + to.ToShortDateString() + "# and  IsCustomer=Yes  ";

答案 1 :(得分:1)

我在我的问题中找不到任何解决方案,所以我决定删除目标数据库中的重复数据。

我使用以下语句删除数据

   Delete * from Orders where AutoOrderID   in (SELECT Orders.AutoOrderID FROM Orders Inner JOIN OrdersSource ON OrdersSource .OrderId = Orders.OrderId and OrdersSource .OrderDate=Orders.OrderDate);