gpt4 book ai didi

ruby - 如何从 Sequel 迁移生成 SQL 语句

转载 作者:数据小太阳 更新时间:2023-10-29 08:59:55 24 4
gpt4 key购买 nike

我想在没有连接到实际数据库的情况下将生成的 SQL 语句从 Sequel 迁移输出到一个文件。我需要这个,因为我想以 MySQL 形式导出语句,但我通常使用 PostgreSQL。

我可以尝试在创建数据库时使用 -E 选项设置 MySQL 和输出,但这不是正常工作的方式吗?

我需要的是这样的:

sequel -m db/migrations/ -E --type mysql > msysql_statements.sql

我正在使用 Sequelmigrations .

有什么办法可以实现吗?

根据答案进行试验

我尝试了 Jeremy Evans 提出的命令的回答:

sequel -m db/migrations/-t -E mock://mysql

错误如下输出:

  I, [2016-07-18T13:57:09.020630 #21573]  INFO -- : SELECT NULL AS `nil` FROM `schema_migrations` LIMIT 1
I, [2016-07-18T13:57:09.020802 #21573] INFO -- : SELECT * FROM `schema_migrations` LIMIT 1
/home/me/.rvm/gems/ruby-2.2.1/gems/sequel-4.34.0/lib/sequel/extensions/migration.rb:751:in `schema_dataset': Migrator table schema_migrations does not contain column filename (Sequel::Migrator::Error)
from /home/me/.rvm/gems/ruby-2.2.1/gems/sequel-4.34.0/lib/sequel/extensions/migration.rb:450:in `initialize'
from /home/me/.rvm/gems/ruby-2.2.1/gems/sequel-4.34.0/lib/sequel/extensions/migration.rb:652:in `initialize'
from /home/me/.rvm/gems/ruby-2.2.1/gems/sequel-4.34.0/lib/sequel/extensions/migration.rb:397:in `new'
from /home/me/.rvm/gems/ruby-2.2.1/gems/sequel-4.34.0/lib/sequel/extensions/migration.rb:397:in `run'
from /home/me/.rvm/gems/ruby-2.2.1/gems/sequel-4.34.0/lib/sequel/extensions/migration.rb:368:in `apply'
from /home/me/.rvm/gems/ruby-2.2.1/gems/sequel-4.34.0/bin/sequel:160:in `<top (required)>'
from /home/me/.rvm/gems/ruby-2.2.1/bin/sequel:23:in `load'
from /home/me/.rvm/gems/ruby-2.2.1/bin/sequel:23:in `<main>'
from /home/me/.rvm/gems/ruby-2.2.1/bin/ruby_executable_hooks:15:in `eval'
from /home/me/.rvm/gems/ruby-2.2.1/bin/ruby_executable_hooks:15:in `<main>'

不幸的是,它似乎试图从模拟数据库访问某些东西。

更新

根据 Jeremy 的回答,我有一些事情要做,我想出了以下 hacky 解决方法,它至少生成了大部分语句,但不是全部 :( :

  • 发出 sequel -m db/migrations/-t -E mock://mysql > mysql-statements.sql
  • 如果你得到一个异常(exception),在后续代码中注释掉 raise 语句
  • 然后您将得到带有正确 sql 语句的输出,但带有额外的日志记录信息
  • 通过使用一些替换工具或使用 sublime 或 atom 等多光标编辑器更容易地删除这些额外信息
  • 在行尾加上分号
  • 现在你有了正确的 mysql 语句
  • 不要忘记恢复对 sequel-gem-code 的修改 ;)

最佳答案

sequel -m db/migrations/ -E mock://mysql > msysql_statements.sql

关于ruby - 如何从 Sequel 迁移生成 SQL 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38395383/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com