我们正在开发一个网站,当我们在本地开发(我们其中一个来自Windows)时,我们使用sqlite3,但在服务器(linux)上我们使用postgres。我们希望能够将生产数据库导入到我们的开发过程中,所以我想知道是否有一种方法可以将postgres数据库转换转换为sqlite3可以理解的东西(只是将它添加到postgres的转储SQL中给了很多,许多错误)。或者只是在Windows上安装postgres会更容易吗?感谢。
答案 0 :(得分:13)
我发现this blog entry指导您执行以下步骤:
创建PostgreSQL数据库的转储。
ssh -C username@hostname.com pg_dump --data-only --inserts YOUR_DB_NAME > dump.sql
删除/修改转储。
SET
SELECT pg_catalog.setval
t
”f
”添加BEGIN;
作为第一行,END;
作为最后一行
重新创建一个空的开发数据库。 bundle exec rake db:migrate
导入转储。
sqlite3 db/development.sqlite3
sqlite> delete from schema_migrations;
sqlite> .read dump.sql
当然通过ssh连接并使用rake创建一个新的db是可选的
答案 1 :(得分:6)
答案 2 :(得分:3)
第1步:转储数据库结构和数据
pg_dump --create --inserts -f myPgDump.sql -d myDatabaseName -U myUserName -W myPassword
第2步:从myPgDump.sql中删除除CREATE TABLES和INSERT语句之外的所有内容(使用文本编辑器)
STEP3:初始化您的SQLite数据库传递Postgres转储的结构和数据
sqlite3 myNewSQLiteDB.db -init -myPgDump.sql
第4步:使用您的数据库;)
答案 3 :(得分:1)
来自https://stackoverflow.com/a/31521432/1680728(在此投票):
sequel
宝石使此过程非常轻松:
首先安装Ruby,然后通过运行gem install sequel
安装gem。
如果是sqlite,则可能是这样的:sequel -C postgres://user@localhost/db sqlite://db/production.sqlite3
积分@lulalala。
答案 4 :(得分:0)
万一需要更自动化的解决方案,这是一个开门红:
#!/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
答案 5 :(得分:-1)
使用这里描述的水龙头宝石非常容易: http://railscasts.com/episodes/342-migrating-to-postgresql
我已经开始在我的Mac上使用Postgres.app(无需安装,将应用程序放在Applications目录中,尽管可能需要在文档中描述的PATH环境变量中添加一行)和Induction .app作为查看/查询数据库的GUI工具。