5

我已经在本地开发了一段时间,现在正在将所有内容推向生产。当然,我也在向开发服务器添加数据时没有想到我没有将它重新配置为 Postgres。

现在我有一个 SQLite 数据库,我需要将其信息放在 Postgres 数据库上的远程 VPS 上。

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

4

3 回答 3

3

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

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

  2. 像 (1) 一样,手动转换模式。然后用你喜欢的语言编写一个脚本,连接到两个数据库,从一个数据库中选择,从一个数据库中插入到另一个数据库,可能还有一些数据类型和表示的转换。

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

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

setval()在其中任何一个之后,通常需要一些传输后步骤,例如用于初始化序列。

于 2012-08-19T00:57:43.077 回答
1

Heroku 的数据库转换工具叫做sequel. 以下是您需要的红宝石:

gem install sequel
gem install sqlite3
gem install pg

然后这对我来说适用于当前工作目录中名为“tweets.db”的 sqlite 数据库文件:

sequel -C sqlite://tweets.db postgres://pgusername:pgpassword@localhost/pgdatabasename
于 2016-12-26T21:52:50.940 回答
0

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

于 2021-03-23T14:27:13.827 回答