Export bazy postgresql do xmla

Mam nowa wersje aplikacji, ktorej baza danych nie jest kompatybilna z poprzednia wersja aplikacji. Nowa baza jest mocno rozszerzona. Musze przeniesc dane ze starej struktury do nowej aplikacji dlatego chce przekonwertowac obecna baze do xmla a nastepnie napisac modul migracyjny (nie mylic z railsowymi
migracjami)

Może być yaml? https://github.com/adamwiggins/yaml_db

pojawił się problem:

Don't know how to build task 'db:data:dump'

Więc dalej szukam jakiejś propozycji

http://www.postgresql.org/docs/current/static/functions-xml.html

Masz to wbudowane w pgsql

table_to_xml, table_to_xmlschema, schema_to_xml, database_to_xml

Spróbuj tego: https://github.com/ludicast/yaml_db
Dopisałeś gema do Gemfile w starej aplikacji?

@Paweł Kondzior: chodzi mi o dump całej bazy danych a nie pojedynczych tabel

@sevos:aplikacja w Rails 2 nie generuje Gemfile, mało się orientuje w strukturze aplikacji Rails 2

dodaj do config.gem:
http://guides.rubyonrails.org/2_2_release_notes.html#config-gems

Tak wpisałem tam gema i wpisałem rake gems:install i dalej jest problem tzn jak wpisuje rake -T to nie ma tam rake db:data:dump

A rake db:dump
?

też nie ma

ruby script/plugin install git://github.com/adamwiggins/yaml_db.git rake db:data:dump # Dump contents of Rails database to db/data.yml rake db:data:load # Load contents of db/data.yml into the database
I musi działać :smiley:

database_to_xml ?

Po wykonaniu pierwszej linijki nic mi się nie wyświetla na ekranie i odrazu pojawia się znak zachęty w następnej linii

A może lepiej to zrealizować na podstawie migracji, tylko czy migracje pozwalają również kopiować zawartość pól do innych pól?

Migracja może zrobić wszystko, o co ją poprosisz. To tylko kawałek dowolnego kodu, który pilnuje, żeby na danej bazie danych być wykonanym tylko jeden raz (w uproszczeniu).

Przekopiowałem tabele z docelowego projektu do nowej aplikacji, która ma służyć tylko do konwersji danych i przy wywołaniu polecenia rake db:migrate --trace
pojawił się problem[code](in /home/wafcio/convert)
** Invoke db:migrate (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:migrate
== CreateRoles: migrating ====================================================
– create_table(:roles)
NOTICE: CREATE TABLE will create implicit sequence “roles_id_seq” for serial column “roles.id”
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index “roles_pkey” for table “roles”
-> 0.0240s
rake aborted!
An error has occurred, this and all later migrations canceled:

uninitialized constant CreateRoles::Role
/home/wafcio/convert/db/migrate/20110425212558_create_roles.rb:9:in up' /home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/activerecord-3.0.3/lib/active_record/migration.rb:312:inblock in migrate’
/home/wafcio/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/benchmark.rb:294:in measure' /home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/activerecord-3.0.3/lib/active_record/migration.rb:312:inmigrate’
/home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/activerecord-3.0.3/lib/active_record/migration.rb:395:in migrate' /home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/activerecord-3.0.3/lib/active_record/migration.rb:537:inblock (2 levels) in migrate’
/home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/activerecord-3.0.3/lib/active_record/migration.rb:611:in call' /home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/activerecord-3.0.3/lib/active_record/migration.rb:611:inblock in ddl_transaction’
/home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/database_statements.rb:139:in transaction' /home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/activerecord-3.0.3/lib/active_record/transactions.rb:204:intransaction’
/home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/activerecord-3.0.3/lib/active_record/migration.rb:611:in ddl_transaction' /home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/activerecord-3.0.3/lib/active_record/migration.rb:536:inblock in migrate’
/home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/activerecord-3.0.3/lib/active_record/migration.rb:523:in each' /home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/activerecord-3.0.3/lib/active_record/migration.rb:523:inmigrate’
/home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/activerecord-3.0.3/lib/active_record/migration.rb:433:in up' /home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/activerecord-3.0.3/lib/active_record/migration.rb:415:inmigrate’
/home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/activerecord-3.0.3/lib/active_record/railties/databases.rake:142:in block (2 levels) in <top (required)>' /home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/rake-0.8.7/lib/rake.rb:636:incall’
/home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/rake-0.8.7/lib/rake.rb:636:in block in execute' /home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/rake-0.8.7/lib/rake.rb:631:ineach’
/home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/rake-0.8.7/lib/rake.rb:631:in execute' /home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/rake-0.8.7/lib/rake.rb:597:inblock in invoke_with_call_chain’
/home/wafcio/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/monitor.rb:201:in mon_synchronize' /home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/rake-0.8.7/lib/rake.rb:590:ininvoke_with_call_chain’
/home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/rake-0.8.7/lib/rake.rb:583:in invoke' /home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/rake-0.8.7/lib/rake.rb:2051:ininvoke_task’
/home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/rake-0.8.7/lib/rake.rb:2029:in block (2 levels) in top_level' /home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/rake-0.8.7/lib/rake.rb:2029:ineach’
/home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/rake-0.8.7/lib/rake.rb:2029:in block in top_level' /home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/rake-0.8.7/lib/rake.rb:2068:instandard_exception_handling’
/home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/rake-0.8.7/lib/rake.rb:2023:in top_level' /home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/rake-0.8.7/lib/rake.rb:2001:inblock in run’
/home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/rake-0.8.7/lib/rake.rb:2068:in standard_exception_handling' /home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/rake-0.8.7/lib/rake.rb:1998:inrun’
/home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/rake-0.8.7/bin/rake:31:in <top (required)>' /home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/bin/rake:19:inload’
/home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/bin/rake:19:in `’[/code]
A tabela która chciałem zmigrować wygląda tak

[code=ruby]class CreateRoles < ActiveRecord::Migration
def self.up
create_table :roles do |t|
t.string :name

  t.timestamps
end

Role.new do |t|
  t.name = "admin"
  t.save
end

end

def self.down
drop_table :roles
end
end[/code]

Musisz stworzyć klasę (model) Role. Samo istnienie tabeli to za mało. Model możesz stworzyć albo tak, jak rzecze Prawo (app/models) albo w tej, konkretnej migracji. To drugie rozwiązanie jest lepsze w długo żyjących projektach, gdzie istnieją szanse, że dany model będzie modyfikowany albo nawet zostanie usunięty.

[code=ruby]class CreateRoles < ActiveRecord::Migration
class Role < ActiveRecord::Base
# Samo istnienie klasy może wystarczyć, ale możesz jej
# spokojnie definiować wszystko, czego potrzebujesz
end

def self.up
# … i tak dalej[/code]