Sql 如何在Ms Access中运行数千个查询?

Sql 如何在Ms Access中运行数千个查询?,sql,ms-access,Sql,Ms Access,我在Ms Access中发现了SQL视图来执行一些查询,但我需要执行.SQL文件中的大约20000个更新查询 当我在SQL视图中粘贴时,它会显示“文本太长,无法修改” 如何运行这些更新?可能有一种更简单的方法,但您可以编写VBA代码,逐行读取文本文件,然后使用DoCmd.RunSQL运行每个查询。Access SQL查询中的字符数限制为“大约64000”-请参见此处。不幸的是,您不能在一个查询中执行多个语句。我认为这将意味着你在VBA方面有相当多的工作要做。下面是一个示例方法(伪代码):- 如果

我在Ms Access中发现了SQL视图来执行一些查询,但我需要执行.SQL文件中的大约20000个更新查询

当我在SQL视图中粘贴时,它会显示“文本太长,无法修改”


如何运行这些更新?

可能有一种更简单的方法,但您可以编写VBA代码,逐行读取文本文件,然后使用
DoCmd.RunSQL
运行每个查询。

Access SQL查询中的字符数限制为“大约64000”-请参见此处。不幸的是,您不能在一个查询中执行多个语句。我认为这将意味着你在VBA方面有相当多的工作要做。下面是一个示例方法(伪代码):-

如果您习惯于使用其他RDBMS执行大量语句,这可能会让您大吃一惊

另一个建议是:我们不知道您的文件到底是什么样子,也不知道它来自哪里,但是如果它是从您可以访问的另一个RDBMS生成的,那么我强烈建议您设置到它的ODBC连接,并查询出您需要的数据(通过链接表或编写传递查询),然后插入本地访问表。这将比执行数千条语句快很多数量级


如果数据的唯一来源是SQL语句,那么如果您可以将SQL文本解析为相关列(例如PK和要更新的值,或者如果插入所有列值),然后另存为csv文件,导入Access,根据需要添加键,然后对导入的数据和现有表运行单个update语句作为可更新的查询。将文件转储到Excel中并使用各种字符串函数可以让您非常快速地解析数据。

您有一个包含20000个查询的文件,还是有20000个包含每个查询的文件?我不敢问为什么。一个包含20000个查询的文件。。。以“;”结尾的每行一个,你能告诉我更多细节吗?;-)我是MySQL DBA,与MS Acces无关,但我现在有一个问题:-p这个:应该开始了。忽略关于在字符串中搜索关键字的部分。不,您仍然缺少链接中解决方案中的许多关键元素。你不能走捷径;您必须至少对示例中的每个命令的作用有一个基本的了解,以便您可以根据自己的需要对其进行修改。。。您可以通过指向一个“不相似”的示例来提供更多帮助:-)另外,我认为
DoCmd.RunSQL
对于一个接一个地运行数千个查询来说效率很低,因为它本质上是一个Access宏命令。我建议使用ADO(或DAO)让ACE(Jet)数据库引擎直接执行查询。这将绕过不必要的访问开销。不要调用
CurrentDB
20000次。CurrentDb不是静态对象,而是每次重新打开新数据库对象的方法调用。相反,在循环之前执行类似于设置db=CurrentDB的操作,然后调用db.Execute。我意识到这只是伪代码,但只是一个简单的快速“给我代码”的例子对于这类问题,答案并不适用。@CPerkins您对CurrentDB的评论非常正确,在实践中不应该这样使用它。我也不认为我会尝试在一个循环中执行20000条语句@火烈鸟。我认为向VBA代码中添加一些调试信息会使您受益匪浅,这样我们就可以看到它失败的地方。在DoCmd.RunSQL(或db.execute)之前插入debug.print StrIn以检查SQL语句。然后可以在即时窗口db.execute“blah blah”,dbfailonerror中执行,并查看错误情况。我将用另一个可能更好的建议来编辑我的答案。
open file
read line into variable
while not EOF
currentdb.execute variable, dbfailonerror
read next line
wend
close file