2012-03-07 43 views
0

我在不知道Heroku需要Postgresql的情況下用Rails開始一個項目。現在我想將我的sqlite3錶轉換爲postgresql表。我該怎麼做?如何將sqlite3錶轉換爲postgresql表?

我找到一個辦法讓SQL插入:

BEGIN TRANSACTION; 
insert into places ("id", "name", "content", "tags", "created_at", "updated_at") values ('0', 'bac à papier', NULL, 'bac de recyclage', '13309980782012-03-06 03:57:21.219233', '13309980782012-03-06 03:57:21.219233'); 
insert into places ("id", "name", "content", "tags", "created_at", "updated_at") values ('1', 'bac PVM', 'plastique/verre/métal', NULL, '13310076572012-03-06 03:57:21.219233', '13310076572012-03-06 03:57:21.219233'); 
insert into places ("id", "name", "content", "tags", "created_at", "updated_at") values ('2', 'bac de déchets', NULL, 'poubelle', '13310076572012-03-06 03:57:21.219233', '13310076572012-03-06 03:57:21.219233'); 
insert into places ("id", "name", "content", "tags", "created_at", "updated_at") values ('3', 'cafétéria', '', '', '2012-03-06 03:57:21.219233', '2012-03-06 03:57:21.219233'); 
insert into places ("id", "name", "content", "tags", "created_at", "updated_at") values ('4', 'compost', NULL, NULL, '2012-03-06 03:57:21.219233', '2012-03-06 03:57:21.219233'); 
insert into places ("id", "name", "content", "tags", "created_at", "updated_at") values ('5', 'consigne', NULL, NULL, '2012-03-06 03:57:21.219233', '2012-03-06 03:57:21.219233'); 
insert into places ("id", "name", "content", "tags", "created_at", "updated_at") values ('6', 'CRD', NULL, NULL, '2012-03-06 03:57:21.219233', '2012-03-06 03:57:21.219233'); 
insert into places ("id", "name", "content", "tags", "created_at", "updated_at") values ('7', 'ressources matérielles', NULL, NULL, '2012-03-06 03:57:21.219233', '2012-03-06 03:57:21.219233'); 
insert into places ("id", "name", "content", "tags", "created_at", "updated_at") values ('8', 'sécurité', NULL, NULL, '2012-03-06 03:57:21.219233', '2012-03-06 03:57:21.219233'); 
insert into places ("id", "name", "content", "tags", "created_at", "updated_at") values ('10', 'technicien chimie', NULL, NULL, '2012-03-06 03:57:21.219233', '2012-03-06 03:57:21.219233'); 
insert into places ("id", "name", "content", "tags", "created_at", "updated_at") values ('11', 'technicien biologie', NULL, NULL, '2012-03-06 03:57:21.219233', '2012-03-06 03:57:21.219233'); 
insert into places ("id", "name", "content", "tags", "created_at", "updated_at") values ('12', 'service informatique', NULL, NULL, '2012-03-06 03:57:21.219233', '2012-03-06 03:57:21.219233'); 
insert into places ("id", "name", "content", "tags", "created_at", "updated_at") values ('13', 'îlot multi-récupération', 'face au B-227', NULL, '2012-03-06 03:57:21.219233', '2012-03-06 03:57:21.219233'); 
insert into places ("id", "name", "content", "tags", "created_at", "updated_at") values ('14', 'récupérateurs extérieurs', NULL, NULL, '2012-03-06 03:57:21.219233', '2012-03-06 03:57:21.219233'); 
COMMIT; 

解決方案 這裏是我解決了這個問題:

我用克里斯的解決方案來告訴我要使用PostgreSQL的軌道。然後,我跑了db:migrate

要將我的SQLite錶轉換爲PostgreSQL表,我使用sliteman,一個Linux程序來管理SQLite數據庫。有了這個實用程序,我能夠將錶轉換爲SQL插入。我登錄到PostgreSQL並應用插入。

瞧!

回答

1

如果你只是想你的本地數據庫上運行的Postgres匹配的Heroku,只是改變你的database.yml,以看起來像這樣:

development: 
    adapter: postgresql 
    encoding: utf8 
    database: development 
    pool: 5 
    username: postgres 
    password: 

test: &TEST 
    adapter: postgresql 
    encoding: utf8 
    database: test 
    pool: 5 
    username: postgres 
    password: 

production: 
    adapter: postgresql 
    encoding: utf8 
    database: production 
    pool: 5 
    username: postgres 
    password: 

cucumber: 
    <<: *TEST 

這是假設下你與一個Postgres的作用名字'postgres'。如果你在Mac上,你的用戶名應該默認爲你的用戶短名稱。