将sqlite数据库加载到Postgres中

时间:2012-08-18 18:17:19

标签: sqlite postgresql vps

我一直在本地开发一段时间,现在我正在把所有东西都投入生产。当然,我还在向开发服务器添加数据,却没有想到我没有将它重新配置为Postgres。

现在我有一个SQLite DB,我需要在Postgres DB上的远程VPS上获取信息。

我尝试过转储到.sql文件但是得到了很多来自Postgres的语法投诉。最好的方法是什么?

3 个答案:

答案 0 :(得分:2)

对于两个数据库之间的几乎任何转换,选项是:

  1. 从源数据库执行仅架构转储。手动转换它并将其加载到目标数据库中。然后从源DB中以与它提供的最兼容的SQL转储形式进行数据转储。尝试将其加载到目标数据库中。遇到问题时,使用sed / awk / perl / whatever将转换脚本转换为转储,然后重试。重复,直到加载并且结果匹配。

  2. 与(1)类似,手动转换架构。然后用您首选语言编写一个脚本,该脚本连接到两个数据库,从一个数据库中选择SELECT,在另一个数据库中插入INSERT,可能需要对数据类型和表示进行一些转换。

  3. 使用Talend或Pentaho等ETL工具连接到两个数据库并在它们之间进行转换。 ETL工具就像是“其他人已经写过”的(2)版本,但他们可以学习一些东西。

  4. 希望您也能找到预先编写的转换。 Heroku一个名为sequel,适用于SQLite - > PostgreSQL的;它是否可以在没有Heroku的情况下使用,并且能够在没有所有其他Heroku基础设施和代码的情况下运行?

  5. 在完成其中任何一项后,通常需要使用setval()初始化序列等一些转移后的步骤。

答案 1 :(得分:1)

Heroku的数据库转换工具称为<some allocation method>。以下是您需要的红宝石:

sequel

然后这对我来说是在当前工作目录中找到名为'tweets.db'的sqlite数据库文件:

gem install sequel
gem install sqlite
gem install pg

答案 2 :(得分:0)

PostgreSQL 支持“外部数据包装器”,它允许您通过 DB 直接访问任何数据源,包括 sqlite。甚至可以自动导入架构。然后您可以使用 create table localtbl as (select * from remotetbl) 将您的数据放入实际的 PG 存储中。