我们正在开发一个网站,当我们在本地开发时(其中一个来自Windows),我们使用sqlite3,但在服务器(Linux)上,我们使用postgres。我们希望能够将生产数据库导入到我们的开发过程中,所以我想知道是否有一种方法可以将postgres数据库转储转换为sqlite3可以理解的东西(只是将postgres的转储SQL提供给它就会产生许多错误)。或者仅仅在windows上安装postgres会更容易吗?谢谢.
我们正在开发一个网站,当我们在本地开发时(其中一个来自Windows),我们使用sqlite3,但在服务器(Linux)上,我们使用postgres。我们希望能够将生产数据库导入到我们的开发过程中,所以我想知道是否有一种方法可以将postgres数据库转储转换为sqlite3可以理解的东西(只是将postgres的转储SQL提供给它就会产生许多错误)。或者仅仅在windows上安装postgres会更容易吗?谢谢.
8条答案
按热度按时间cuxqih211#
我找到了this blog entry,它指导你做这些步骤:
1.创建PostgreSQL数据库的转储。
1.删除/修改转储。
1.删除以
SET
开头的行1.删除以
SELECT pg_catalog.setval
开头的行1.将“
t
”替换为true1.为'
f
'替换false1.添加
BEGIN;
作为第一行,END;
作为最后一行1.重新创建一个空的开发数据库。
bundle exec rake db:migrate
1.导入转储。
当然,通过ssh连接和使用rake创建一个新数据库是可选的
cedebl8k2#
STEP1:转储数据库结构和数据
STEP2:删除myPgDump.sql中除CREATETABLES和RESTATE语句以外的所有内容(使用文本编辑器)
STEP 3:初始化你的SQLite数据库,传递Postgres转储的结构和数据
STEP 4:使用您的数据库;)
brvekthn3#
引用自https://stackoverflow.com/a/31521432/1680728(upvote there):
sequel
gem使这是一个非常轻松的过程:首先安装Ruby,然后运行
gem install sequel
安装gem。在sqlite的情况下,它会像这样:
sequel -C postgres://user@localhost/db sqlite://db/production.sqlite3
感谢@lulalala。
9rbhqvlz4#
您可以使用pg2sqlite将pg_dump输出转换为sqlite。
pg2sqlite不支持Schemas,如果您转储包含schema,则需要删除它。你可以使用这个脚本:
col17t5w5#
尽管这里有很多非常有用的答案,但我只想将其标记为已回答。最后,我们采纳了评论中的建议:
我只是把你的开发环境切换到PostgreSQL,在一个数据库上开发(特别是像SQLite这样宽松和宽容的数据库),但在另一个数据库上部署(特别是像PostgreSQL这样严格的数据库)通常是一个令人恼火和咒骂的方法。- @mu太短了
为了呼应穆的回应,不要这样做..不要这样做..不要这样做。在同一个东西上开发和部署。不这样做是不好的工程实践。- @Kuberchaun
所以我们在我们的开发机器上安装了postgres。这是很容易开始和工作非常顺利。
fxnxkyjh6#
如果需要一个更自动化的解决方案,这里有一个良好的开端:
wfypjpf47#
当我面对同样的问题时,我在网上找不到任何有用的建议。我的源PostgreSQL数据库有非常复杂的模式。
你只需要从你的db文件中手动删除除了表创建之外的所有内容
更多详情-here
hjzp0vay8#
对我来说,使用tap gem很容易,如下所述:http://railscasts.com/episodes/342-migrating-to-postgresql
我已经开始在我的Mac上使用Postgres.app(不需要安装,将应用程序放在你的应用程序目录中,尽管可能需要像文档中所描述的那样在你的PATH环境变量中添加一行),使用 Induction.app作为一个GUI工具来查看/查询数据库。