Import of YAML files during rake?


#1

I want to import yaml files in to my project.

I have tried with fixtures, but it deletes the current data of the
table.
I need a way to import yaml filen in to a exsistant table.

regards
svend


#2

On Oct 18, 11:19 pm, “removed_email_address@domain.invalid” removed_email_address@domain.invalid
wrote:

I want to import yaml files in to my project.

I have tried with fixtures, but it deletes the current data of the
table.
I need a way to import yaml filen in to a exsistant table.

If you want to load yaml data into your development database, for
instance, you can add migrations to do this.
In db/migrate you should have the migration files for your tables
which you created when you generated your models. Let’s suppose you
are loading to the ‘users’ table then you might run:
% script/generate migration LoadUserData

Migration file might look like this:

require ‘active_record/fixtures’

class LoadUserData < ActiveRecord::Migration
def self.up
down
directory = File.join( File.dirname(FILE) , ‘data’ )
Fixtures.create_fixtures(directory, ‘users’)
end

def self.down
User.delete_all
end
end

where;
‘data’ is db/migrate/data directory; and
‘users’ is the db/migrate/data/users.yml file - which will load into
‘users’ table for your ‘User’ model.

Then run your migrations:
% rake db:migrate VERSION=0
% rake db:migrate

I think this technique is in the Rails book.


Daniel B.


#3

Thanx, but using fixtures_create removes the current contense of the
database.
This is not for devel, this is in the production enviroment.

regards
svend


#4

On Oct 19, 6:13 am, “removed_email_address@domain.invalid” removed_email_address@domain.invalid
wrote:

Thanx, but using fixtures_create removes the current contense of the
database.
This is not for devel, this is in the production enviroment.

regards
svend

I’ve only used the technique I mentioned to populate the table in its
totality. If you’re appending data to a table, you could perhaps
create a loading table as a copy of the table you’re loading to (sql:
create as select * from

where 1=0; (not sure
if it works on every db) / or do it the migration way). Use the
fixture technique discussed to load it with data from your yaml file.
Then run an insert sql statement: 'insert into
select * from
'.


Daniel B.


#5

I hate it when people think out of the box, and comes up with a
perfect simple solution.
Perfect, thanx for the help.

regards
svend