Как преобразовать базу данных postgres в sqlite - PullRequest
11 голосов
/ 27 мая 2011

Мы работаем над веб-сайтом, и когда мы разрабатываем локально (один из нас из Windows), мы используем sqlite3, но на сервере (linux) мы используем postgres.Мы хотели бы иметь возможность импортировать производственную базу данных в наш процесс разработки, поэтому мне интересно, есть ли способ конвертировать из дампа базы данных postgres в то, что может понять sqlite3 (просто подача его в выгруженный SQL из postgres дала многомного ошибок).Или было бы проще просто установить postgres на windows?Спасибо.

Ответы [ 5 ]

13 голосов
/ 29 мая 2014

Я нашел эту запись в блоге , которая поможет вам выполнить следующие действия:

  1. Создать дамп базы данных PostgreSQL.

    ssh -C username@hostname.com pg_dump --data-only --inserts YOUR_DB_NAME > dump.sql
    
  2. Удалить / изменить дамп.

    1. Удалить строки, начинающиеся с SET
    2. Удалить строки, начинающиеся с SELECT pg_catalog.setval
    3. Заменить true для 't'
    4. Заменить false для 'f'
  3. Добавить BEGIN; какпервая строка и END; как последняя строка

  4. Создать пустую базу данных разработки.bundle exec rake db:migrate

  5. Импортировать дамп.

    sqlite3 db/development.sqlite3
    sqlite> delete from schema_migrations;
    sqlite> .read dump.sql
    

Конечно, подключение по ssh и создание новой базы данных с помощью rake не являются обязательными

6 голосов
/ 27 мая 2011

Есть несколько инструментов конвертера:

http://sqlite.com/cvstrac/wiki?p=ConverterTools

Было бы проще просто установить Postgres на Windows?

Возможно, и это очень просто.

3 голосов
/ 04 декабря 2014

STEP1: создать дамп структуры и данных вашей базы данных

pg_dump --create --inserts -f myPgDump.sql -d myDatabaseName -U myUserName -W myPassword

STEP2: удалить все, кроме операторов CREATE TABLES и INSERT, из myPgDump.sql (используя текстовый редактор)

STEP3: инициализировать структуру передачи вашей базы данных SQLite и данные вашего дампа Postgres

sqlite3 myNewSQLiteDB.db -init -myPgDump.sql

STEP4: использовать вашу базу данных;)

0 голосов
/ 08 мая 2019

Если вам нужно более автоматизированное решение, вот вам начало:

#!/bin/bash

$table_name=TABLENAMEHERE

PGPASSWORD="PASSWORD" /usr/bin/pg_dump --file "results_dump.sql" --host "yourhost.com" --username "username" --no-password --verbose --format=p --create --clean --disable-dollar-quoting --inserts --column-inserts --table "public.${table_name}" "memseq"

# Some clean ups
perl -0777 -i.original -pe "s/.+?(INSERT)/\1/is" results_dump.sql
perl -0777 -i.original -pe "s/--.+//is" results_dump.sql

# Remove public. preffix from table name
sed -i "s/public.${table_name}/${table_name}/g" results_dump.sql

# fix binary blobs
sed -i "s/'\\\\x/x'/g" results_dump.sql

# use transactions to make it faster
echo 'BEGIN;' | cat - results_dump.sql > temp && mv temp results_dump.sql
echo 'END;' >> results_dump.sql

# clean the current table 
sqlite3 results.sqlite "DELETE FROM ${table_name};"

# finally apply changes
sqlite3 results.sqlite3 < results_dump.sql && \
rm results_dump.sql && \
rm results_dump.sql.original
0 голосов
/ 15 октября 2012

Мне было ОЧЕНЬ легко использовать гем taps, как описано здесь: http://railscasts.com/episodes/342-migrating-to-postgresql

И я начал использовать Postgres.app на моем Mac (установка не требуется, поместите приложение в каталог «Приложения», хотя, возможно, придется добавить одну строку в переменную окружения PATH, как описано в документации), с помощью Induction. .app как инструмент с графическим интерфейсом для просмотра / запроса к базе данных.

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