我正在尝试加速我的代码,瓶颈似乎是来自Access外部通过ODBC的Jet MDB的单独插入语句.我需要一次插入100行,并且必须重复多次.
可以使用SQL代码在表中插入多行吗?这是我尝试过的一些东西,但它们都没有用.有什么建议?
INSERT INTO tblSimulation (p, cfYear, cfLocation, Delta, Design, SigmaLoc,
Sigma, SampleSize, Intercept) VALUES
(0, 2, 8.3, 0, 1, 0.5, 0.2, 220, 3.4),
(0, 2.4, 7.8, 0, 1, 0.5, 0.2, 220, 3.4),
(0, 2.3, 5.9, 0, 1, 0.5, 0.2, 220, 3.4)
INSERT INTO tblSimulation (p, cfYear, cfLocation, Delta, Design, SigmaLoc,
Sigma, SampleSize, Intercept) VALUES
(0, 2, 8.3, 0, 1, 0.5, 0.2, 220, 3.4) UNION
(0, 2.4, 7.8, 0, 1, 0.5, 0.2, 220, 3.4) UNION
(0, 2.3, 5.9, 0, 1, 0.5, 0.2, 220, 3.4)
Run Code Online (Sandbox Code Playgroud)
我在R(我正在使用的软件)中找到了一个优雅的解决方案。RODBC 包有一个函数 sqlSave,它允许一次将整个 data.frame 附加到表中。这几乎是事务中单个插入速度的两倍。
library(RODBC)
MDB <- odbcConnectAccess("database.mdb")
sqlSave(channel = MDB, dat = sims, tablename = "tblSimulation", append = TRUE, rownames = FALSE)
odbcClose(MDB)
Run Code Online (Sandbox Code Playgroud)