如何将用Ruby编写的MySQL查询转换为SQL?
原因如下:
create_table "academic_details", :force => true do |t|
t.integer "registration_id"
t.datetime "created_at"
t.datetime "updated_at"
end
我想要这样的事情:
CREATE TABLE IF NOT EXISTS `academic_details` (
`registration_id` int(11) NOT NULL AUTO_INCREMENT,
`created_at` DATETIME,
`updated_at` DATETIME,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
答案 0 :(得分:3)
运行rake db:structure:dump
,所有表定义都将在db / structure.sql
答案 1 :(得分:0)
以下命令将帮助您:
rake db:structure:dump
这将在您的Rails应用程序的structure.sql
文件夹中创建一个名为db
的文件,其中包含您要查找的create table
sql查询以及create index
个查询
但是,我说主要是,因为您需要手动添加每个表的ENGINE
,DEFAULT CHARSET
和COLLATION
。
有关rake命令的更多信息,请参见以下链接。在页面中搜索db:structure:dump
:
答案 2 :(得分:0)
我强烈建议您查看the Sequel gem。它是一个“ORM”,充当Ruby和任意数量的数据库之间的接口。
最大的好处是你可以轻松地在Sequel的DSL中编写查询,它将处理与特定DBM交谈的所有细节。如果您需要转换到其他供应商的数据库引擎,例如PostgreSQL,Oracle或SQLServer,那么转换连接字符串和构建表就很简单了。您根本不必重写任何查询。
特别是,它支持"migrations",这是一种增量定义数据库的简便方法。你的看起来像是:
Sequel.migration do
up do
create_table :academic_details |t|
primary_key :id
Integer :registration_id
Datetime :created_at
Datetime :updated_at
end
down do
drop_table :academic_details
end
end
阅读文档和README page。这是一个很棒的工具。