将完整记录集插入其他数据库 MS Access 中的另一个 table
Insert Complete RecordSet to another table in other database MS Access
我在两个不同的文件中有 2 个包含相同列的表。一个文件 "Base PT.accdb" 我想插入另一个文件 "Sanchez_Mar.mdb" 中的所有 Recordset。两个 table 都有 7 个同名的列。
我在使用 "System.Data.OleDb.OleDbConnection" 时遇到了很多问题,所以我决定使用 RecordSets。
目前我正在使用循环插入所有内容,但是有很多数据所以需要很长时间。
可以将所有记录集插入到另一个数据库吗?
这是我需要帮助的代码部分:
Sub Copiar_BasePT2(RutaPT As String)
Dim Cant as Long
Dim db As Database
Dim dbBase_PT As Database
Set dbBase_PT = OpenDatabase(RutaPT & "\Base PT.accdb")
Set db = CurrentDb
Dim rsSYM As Recordset
Set rsSYM = db.OpenRecordset("SELECT * from FINAL_Alarma_SYM")
rsSYM.MoveLast
Cant = rsSYM.RecordCount
rsSYM.MoveFirst
For i = 1 To Cant
dbBase_PT.Execute ("Insert into Tab_PT values('" & rsSYM.Fields(0) & "','" & rsSYM.Fields(1) & "','" & rsSYM.Fields(2) & "','" & rsSYM.Fields(3) & "','" & rsSYM.Fields(4) & "','" & rsSYM.Fields(5) & "','" & rsSYM.Fields(6) & "');")
rsSYM.MoveNext
DoEvents
Next i
End Sub
是否可以插入所有的记录集?
或者我怎样才能使 table 从 "Sanchez_Mar.mdb" 更快地变为 "Base PT.accdb"?
从源数据库执行以下操作:
1) 创建到目标 table 的链接 table。
- 在“外部数据”选项卡上的“导入”组中,单击“访问”。
- Select Link 而不是导入
- 浏览到目标数据库和select文件
- Select 列表中的目的地 table
2) 从源 table 创建附加查询 select 并附加到链接 table。
- 通过 select 独立地对每个字段创建一个 select 查询
- 通过单击“设计”选项卡中的 "Append" 将查询更改为追加查询
- Select(链接的)目的地 table
3) 运行 它
如果您已经到达目的地 table,这可能是最快的速度。如果您不介意重新开始,可以删除目标 table 并只从目标数据库导入。
您可以 运行 使用您的其他数据库作为数据源的插入查询。
"INSERT INTO Tab_PT (Field1, Field2, Field3, Field4, Field5, Field6, Field7) " & _
" SELECT Field1, Field2, Field3, Field4, Field5, Field6, Field7 " & _
" FROM [MS Access;DATABASE=PathToSanchez_MarDB].FINAL_Alarma_SYM"
我在两个不同的文件中有 2 个包含相同列的表。一个文件 "Base PT.accdb" 我想插入另一个文件 "Sanchez_Mar.mdb" 中的所有 Recordset。两个 table 都有 7 个同名的列。
我在使用 "System.Data.OleDb.OleDbConnection" 时遇到了很多问题,所以我决定使用 RecordSets。 目前我正在使用循环插入所有内容,但是有很多数据所以需要很长时间。 可以将所有记录集插入到另一个数据库吗?
这是我需要帮助的代码部分:
Sub Copiar_BasePT2(RutaPT As String)
Dim Cant as Long
Dim db As Database
Dim dbBase_PT As Database
Set dbBase_PT = OpenDatabase(RutaPT & "\Base PT.accdb")
Set db = CurrentDb
Dim rsSYM As Recordset
Set rsSYM = db.OpenRecordset("SELECT * from FINAL_Alarma_SYM")
rsSYM.MoveLast
Cant = rsSYM.RecordCount
rsSYM.MoveFirst
For i = 1 To Cant
dbBase_PT.Execute ("Insert into Tab_PT values('" & rsSYM.Fields(0) & "','" & rsSYM.Fields(1) & "','" & rsSYM.Fields(2) & "','" & rsSYM.Fields(3) & "','" & rsSYM.Fields(4) & "','" & rsSYM.Fields(5) & "','" & rsSYM.Fields(6) & "');")
rsSYM.MoveNext
DoEvents
Next i
End Sub
是否可以插入所有的记录集? 或者我怎样才能使 table 从 "Sanchez_Mar.mdb" 更快地变为 "Base PT.accdb"?
从源数据库执行以下操作:
1) 创建到目标 table 的链接 table。
- 在“外部数据”选项卡上的“导入”组中,单击“访问”。
- Select Link 而不是导入
- 浏览到目标数据库和select文件
- Select 列表中的目的地 table
2) 从源 table 创建附加查询 select 并附加到链接 table。
- 通过 select 独立地对每个字段创建一个 select 查询
- 通过单击“设计”选项卡中的 "Append" 将查询更改为追加查询
- Select(链接的)目的地 table
3) 运行 它
如果您已经到达目的地 table,这可能是最快的速度。如果您不介意重新开始,可以删除目标 table 并只从目标数据库导入。
您可以 运行 使用您的其他数据库作为数据源的插入查询。
"INSERT INTO Tab_PT (Field1, Field2, Field3, Field4, Field5, Field6, Field7) " & _
" SELECT Field1, Field2, Field3, Field4, Field5, Field6, Field7 " & _
" FROM [MS Access;DATABASE=PathToSanchez_MarDB].FINAL_Alarma_SYM"