【问题标题】:Copying data from old database to new one with a new structure将数据从旧数据库复制到具有新结构的新数据库
【发布时间】:2012-07-27 13:27:18
【问题描述】:

我有一个旧数据库,其中包含一个包含客户订单和客户详细信息的表。我继续使用单独的表为客户和详细信息创建一个新的数据库模型。我设法将客户详细信息迁移到新数据库,但无法迁移客户订单。我们认为这样就可以了,并且我们将从现在开始构建订单记录,而忽略旧数据库中的所有先前订单。这是不久前的事情,我不记得我无法导入客户订单的确切原因。但是,现在我们发现我们需要新数据库中的旧订单。有没有使用 Microsoft Access 的简单方法?

原因如下:

Split a table in access into two linked tables

【问题讨论】:

  • 您还在收到验证错误吗?你用的是什么sql?您要插入的表的架构是什么?你有没有反编译原始数据库?压实修好了吗?

标签: database ms-access migration


【解决方案1】:

根据您的架构的复杂程度,一个简单的方法是通过INSERT INTO SELECT 查询进行架构映射。

例如,如果您的旧数据库有一个表:

Orders
------
OrdID
CustID
ProductName
Price
oDay
oMonth
oYear

而且您的新数据库有不同名称的字段、额外字段等:

OrderDetails
------
Order_ID
Customer_ID
Product
Price
DeliveryAddress
OrderDate

您需要做的就是创建一个插入查询以将旧记录附加到新表中。在定义查询时,您可以指定源和目标字段名称,甚至可以对数据执行函数/表达式。您甚至可以直接查询另一个表,而无需将其链接或导入新数据库:

INSERT INTO OrderDetails (Order_ID,Customer_ID,Product,Price,OrderDate)
SELECT OrdID,CustID,ProductName,Price,DateSerial(oYear,oMonth,oDay) AS oDate
FROM Orders IN 'C:\oldDatabasePath.mdb';

如果您必须对数据进行额外的转换,例如对列值运行表达式,我建议您在添加 INSERT 行之前测试查询的 SELECT 部分。

【讨论】:

  • 太好了,谢谢。如果以前的数据库有 1 个表,而新的有 2 个表,我想将原来的 1 个表拆分成带有链接字段的表,这是否可行?
猜你喜欢
  • 1970-01-01
  • 2019-06-15
  • 1970-01-01
  • 2015-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多