我试图弄清楚如何在VBA excel中使用ADODB进行多行插入。 我的问题似乎是我无法弄清楚用于这个简单任务的正确语法,即使在搜索之后我仍然迷失了为什么它不起作用。
使用语句
执行单个插入操作没有问题INSERT INTO test.dbf ('field1','field3') VALUES ('test1','test11')
但是一旦我尝试
INSERT INTO test.dbf ('field1','field3') VALUES ('test1','test11'), ('test2','test22')
它给我以下错误
[Microsoft][ODBC dBase Driver] Missing semicolon (;) at end of SQL statement.
我当然尝试在语句的末尾添加分号并且根本没有帮助,我也尝试运行语句而没有指定列,但都无济于事。
关于我做错了什么的任何建议?我想避免做8,000个单独插入。
提前致谢
答案 0 :(得分:0)
多行插入的SQL语法比ADODB / ODBC接口更新,因此它们的SQL解析器无法识别它。因此,您的选择是:
使用VBA将其指定为pass-thru查询。只要您执行的DBMS识别出新的插入语法,这应该可以工作。但是,如果您的插入内容基于用户输入,那么您几乎肯定会将数据库暴露给注入,这具有明显的缺点。 (注意:这与pass-thru无关,而是与您使用字符串组合进行插入而不是使用ADODB表对象这一事实。)
只需使用VBA / ADODB表对象插入多行。这不会在引擎盖下使用较新的多行插入SQL语法,但仍然可以正常工作。尝试利用多行语法的唯一原因是,如果您遇到性能问题,并且还有许多其他性能选项可用。