繁体   English   中英

TSV文件中的Seed Rails数据库(MySQL)

[英]Seed Rails database (MySQL) from TSV file

在开发Rails应用程序时,我一直在使用示例数据手动播种其数据库。 但是,在运行rake db:migrate:reset我需要重新设置所有种子,这很繁琐。

我怎样才能rake种子数据库给我吗?

相关模型在此迁移中生成:

class CreateKeyRecords < ActiveRecord::Migration
  def change
    create_table :key_records, :id => false do |t|
      t.string :name
      t.integer :parentID, :limit => 8
      t.primary_key :ID
      t.integer :accesses, :limit => 8
      t.integer :dt
      t.integer :hour
    end
    change_column :key_records, :ID, 'bigint'
  end
end

目前,我正在通过使用以下命令直接在mysql更改应用程序的数据库来播种db:

LOAD DATA LOCAL INFILE '/tmp/input.tsv' INTO TABLE key_records (name, parentID, ID, accesses) SET dt=20141231, hour=23;

其中input.tsv的格式为:

key   1    2    9493878

我怎么会为我做这个“手工播种”?

我认为没有做到这一点的“ rails-ey”方法,但是您应该能够在seeds.rb运行SQL语句。 您可以使用ActiveRecord::Base.connection.execute对数据库运行原始SQL语句。 您的种子文件将如下所示:

stmt = "LOAD DATA LOCAL INFILE '/tmp/input.tsv' 
    INTO TABLE key_records (name, parentID, ID, accesses) 
    SET dt=20141231, hour=23;"

ActiveRecord::Base.connection.execute stmt

然后,您可以使用rake db:seed进行调用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM