2016-07-15 19 views
2

実際のデータベースに接続せずにSequel移行から生成されたSQL文をファイルに出力したいと思います。 私はMySQL形式で文をエクスポートしたいので、これは必要ですが、私は通常PostgreSQLを使用します。Sequel移行からSQL文を生成する方法

データベースの作成中に-Eオプションを使用してMySQLをセットアップして出力しようとする可能性がありますが、それは正しく動作するはずがありません。私は必要なもの

のようなものです:

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

私はmigrationsSequelを使用しています。

これを達成する方法はありますか?残念ながら、それはそう

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>' 

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

エラーは以下の通りです出力:

試験は答え

によると、私は、コマンドが ジェレミー・エバンス「ES答えを提案してみました模擬データベースから何かにアクセスしようとする。

更新

私はで動作するように何かを持っていたジェレミーの答えを、私は:(文の少なくとも大半を生成し、以下のハックの回避策、思い付いた、すべてではない:

  • 問題sequel -m db/migrations/ -t -E mock://mysql > mysql-statements.sql
  • 例外が発生した場合は、
  • のraise文をコメントアウトしてください。正しいSQL文が出力されますが、追加のログ情報が出力されます
  • は今、あなたが正しいのMySQL文
  • いけないことを忘れを持つ行の末尾に崇高または原子
  • プット・セミコロンのようなマルチカーソルエディタで、いくつかの代替ツールまたは簡単に使用することにより、余分な情報を削除します続行宝石コードの変更を元に戻す)

答えて

0

Nulldb https://github.com/nulldb/nulldbがこれに最適です。

+1

これはコメントではなく、答えなければなりません。 – mudasobwa

+1

私はアクティブレコードを使用していないので、私にとっては完璧ではありません:) – farukg

+0

申し訳ありませんが、結論に飛びました。 ;) – AnoE

0

あなたが望むようにbashで行う方法はありませんが、そのためのツールを使用できます。あなたのPostgreSQLをtoolにダンプすると、そこからMySQLが作成されます。

あなたが選んだのための様々なDBフレームワークと別のツールがあります - SQLines

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

あなたの答えはありがたいですが、問題がありました。私はそれを記述して私の質問を更新しました – farukg

+0

私はちょっとハッキーなステップを実行して、 – farukg

関連する問題