mysql - 在 Ruby 中使用 Mysql gem 运行脚本(多个语句)

标签 mysql ruby

我在文件 my_query.sql 中有以下查询脚本

select * from my_table;
delete from my_other_table where id > 5;
select * from my_other_table;

我试图通过 Ruby 中的“mysql”gem 执行此操作我遇到了 2 个关键问题

  1. 查询有多个语句,ruby gem 要求我使用 .query(...) 方法一次查询一个。
  2. 查询有多个select语句,gem返回的是hash,不确定是否会返回多个结果集。

理想情况下,在 unix/bash 中,我可以这样做

mysql my_schema < my_query.sql > my_out_file.txt

这只会一次运行整个脚本(解决问题 #1),并且只会将所有选择语句的结果打印为纯文本(解决问题 #2)。

Ruby 是否有类似的选项来运行查询文件并将整个输出转储到文件?

注意:我知道我可以 shell out 或使用 system(...) 来执行它,但这不是一个可接受的选项。我可以通过 mysql gem(或类似的 gem)完成这项工作吗?

谢谢!

最佳答案

我能够得到如下多个语句。请注意必须传递的标志才能启用多个语句。

conn  = Mysql2::Client.new(:host     => my_hostname,
                           :database => my_db,
                           :username => my_user, 
                           :password => my_password,
                           :flags    => Mysql2::Client::MULTI_STATEMENTS)

关于mysql - 在 Ruby 中使用 Mysql gem 运行脚本(多个语句),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17130107/

相关文章:

php - 如何有效地将字符串与大量正则表达式匹配

mysql - Django AttributeError 'float' 对象没有属性 'split'

php - 获取关系然后从表中获取 - php 和 mysql

mysql - Rails 测试数据库比开发数据库快 10 倍

ruby - 我应该忽略 SCSS 吗?

Mysql INSERT INTO 来自另一个具有条件和限制的表

Python 不正确的整数值 : '(2L,)' for column 'id' at row 1

ruby - 我怎样才能得到 Browser.text.include?不区分大小写?

Ruby:从 YAML 读取哈希数组

ruby - 用于 ubuntu 10.04 的 Chef 独奏 Bootstrap