Как превратить таблицу sqlite3 в таблицу postgresql? - PullRequest
0 голосов
/ 07 марта 2012

Я начал проект с Rails, не зная, что Heroku требуется 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 и применил вставки.

Voila!

1 Ответ

1 голос
/ 07 марта 2012

Если вы хотите, чтобы ваш локальный db работал на 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, по умолчанию ваше имя пользователя должно быть таким, каково ваше короткое имя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...