我有一段代码创建一个新表,然后尝试将记录集值复制到表中。唯一的问题是它运行速度很慢,并且在执行下面的插入部分时访问会显示加载符号。当前,此问题正在插入500条记录,但是当我获得最终数据集时,我将需要插入大约10,000到20,000。
I = 1
DoCmd.SetWarnings False
RecordSet1.MoveFirst
Do While Not RecordSet1.EOF = True
SQL = "INSERT INTO " & FullName & " ("
For Each field In RecordSet1.fields()
SQL = SQL & " " & Replace(field.Name, ".", "_") & ","
Next field
SQL = SQL & "ValidationCheck)"
SQL = SQL & " VALUES("
For Each field2 In RecordSet1.fields()
SQL = SQL & "'" & field2.Value & "',"
Next field2
SQL = SQL & Matches(I) & ")"
DoCmd.RunSQL (SQL)
RecordSet1.MoveNext
I = I + 1
Loop
我想知道的是,有什么办法可以加快速度吗?还是有更好的方法?(我想做的是在运行时从RecordSet中创建具有唯一字段集的表,并为每个Record添加一个具有布尔值的额外列,该布尔值存储在Match数组中)。创建工作正常,但是上面的插入代码非常慢。
是的,请使用DAO。这么快。此示例复制到同一张表,但是您可以轻松地对其进行修改,因此可以在两个表之间复制:
Public Sub CopyRecords()
Dim rstSource As DAO.Recordset
Dim rstInsert As DAO.Recordset
Dim fld As DAO.Field
Dim strSQL As String
Dim lngLoop As Long
Dim lngCount As Long
strSQL = "SELECT * FROM tblStatus WHERE Location = '" & _
"DEFx" & "' Order by Total"
Set rstInsert = CurrentDb.OpenRecordset(strSQL)
Set rstSource = rstInsert.Clone
With rstSource
lngCount = .RecordCount
For lngLoop = 1 To lngCount
With rstInsert
.AddNew
For Each fld In rstSource.Fields
With fld
If .Attributes And dbAutoIncrField Then
' Skip Autonumber or GUID field.
ElseIf .Name = "Total" Then
' Insert default value.
rstInsert.Fields(.Name).Value = 0
ElseIf .Name = "PROCESSED_IND" Then
rstInsert.Fields(.Name).Value = vbNullString
Else
' Copy field content.
rstInsert.Fields(.Name).Value = .Value
End If
End With
Next
.Update
End With
.MoveNext
Next
rstInsert.Close
.Close
End With
Set rstInsert = Nothing
Set rstSource = Nothing
End Sub
问题内容: 好,所以我有一个电子表格可以产生大量记录(〜3500) 我有以下脚本将它们插入到我的Access数据库中: 问题是,它会一条一条地循环遍历每个记录,每次都重建并执行查询,这导致执行速度非常慢(在我的PC上每秒大约有2-3条记录) 有没有一种方法可以让vba一次性将整个范围插入数据库,而无需循环遍历?谢谢 问题答案: 好,我傻 经过一番修补后,事实证明 循环外的位使其更快。
我发誓我在上VB的时候。net课程在大学里,有一种更短的方法告诉变量将“”添加到自身中。也许x=1。不过,我现在使用的是Access,而不是visual studio。当我在VBE中尝试时,它会删除。我甚至删除了,没有任何更改 假设答案是否定的,那就没有捷径了
本文向大家介绍mysql技巧:提高插入数据(添加记录)的速度,包括了mysql技巧:提高插入数据(添加记录)的速度的使用技巧和注意事项,需要的朋友参考一下 问题描述: 普通台式机,采集数据,表中已经有>1000万数据量。 采集回来的数据插入表中的时候很慢,每条约100毫秒。 解决方法: 1、加大mysql配置中的bulk_insert_buffer_size,这个参数默认为8M bulk_inse
OrientDB是一个NoSQL数据库,可以存储文档和面向图形的数据。 NoSQL数据库不包含任何表,那么要如何将数据作为记录插入?在这里,您可以以类,属性,顶点和边的形式查看表数据,类表就像表,属性就像表中的文件。 可以在OrientDB中使用模式定义所有这些实体。 属性数据可以被插入到一个类中。 插入命令在数据库模式中创建一条新记录。 记录可以无模式或遵循一些指定的规则。 以下语句是“插入记录
问题内容: 我正在尝试将Envers集成到我的项目中。我正在使用Hibernate-envers 3.5.5-Final,Hibernate-core 3.5.5-Final,spring 3.0.7.RELEASE。 对于DAO层,我使用的是GenericDaoHibernate类。 我的applicationContext.xml包含: 创建带注释的类的审核表,但是通过在实体表中添加或更新一行
本章提供了有关如何使用JDBC应用程序在表中插入记录的示例。 在执行以下示例之前,请确保您已满足以下条件 - 要执行以下示例,您可以使用实际用户名和密码替换用户名和密码。 您的MySQL或您使用的任何数据库已启动并正在运行。 所需的步骤 (Required Steps) 使用JDBC应用程序创建新数据库需要以下步骤 - Import the packages:要求包含包含数据库编程所需的JDBC类