sql = "statement_1; statement_2; statement_3; etc;"
ActiveRecord::Base.connection.execute(sql)
或者使用换行符,就像这样:
sql = <<EOF
statement_1;
statement_2;
statement_3;
etc;
EOF
ActiveRecord::Base.connection.execute(sql)
(显然,这些语句只是占位符,但根据我的测试,我认为它们的内容并不重要。)
我希望
documentation on
execute
会有一些启发,但除了使用单数(“语句”),它不会。也许是因为我使用的数据库引擎(作为参考,我目前正在使用SQLite。)
我最后写了一个方法,它可以实现以下功能:
def extract_sql_statements(sql)
statements = []
sql.split(';').each do |statement|
statement.strip!
unless statement.empty?
statement += ';'
statements << statement
end
end
return statements
end
statements
. 它解决了这个问题,但如果有更优雅的解决方案,我会有兴趣听到他们。