来自 TSV 文件的种子 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
中应用程序的数据库来为数据库播种:
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
我怎样才能让佣金为我做这个'manual seeding'?
我认为没有 "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
来调用它。
在开发我的 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
中应用程序的数据库来为数据库播种:
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
我怎样才能让佣金为我做这个'manual seeding'?
我认为没有 "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
来调用它。