从SQLite迁移到PostgreSQL的工具


11

我需要不断地从SQLite迁移到PostgreSQL。连续地说,我的意思是我每天都会将SQLite数据库重新导入到PostgreSQL中。如果可以根据需要在SQLite中更改表而不必手动对PostgreSQL数据库进行任何更改,那将是很好的。我将从Python运行迁移,但是它可以是任何外部工具,可以从命令行进行控制。该工具需要可用于Linux,如果它也可以在Windows上运行,那就太好了。


1
只是为了澄清,您是否需要迁移数据和架构?
h0tw1r3 2011年

1
PG Wiki上检查过吗?
Denis de Bernardy 2011年

您能否详细说明为什么需要这样做?也许有比解决和转换数据库更好的方法来解决您的根本问题。例如,CleanFill建议开发一个ETL。
Nick Chammas

@尼克很抱歉,但这是一个非常特殊的情况,需要太多的解释/讨论才能描述。
大卫,

@David-如果您需要更多答案,可能确实有助于在不做过多解释/讨论的情况下,在另一段中总结您的用例。就目前而言,您是在要求我们做太多的猜测。如果指向其他SE网站的链接可以帮助我们了解您的来源,那么它们总是很有帮助的。
杰克说,请尝试topanswers.xyz 2011年

Answers:


3

我正在使用Navicat在数据库之间迁移(主要是MSSQL / MySQL)。它确实可以在Linux和Windows上运行,但主要是GUI工具。如果创建配置文件,则可以从命令行启动它。您可以下载30天的试用版。


谢谢你的提示。它可以使用单个命令行输入来运行整个迁移过程吗?
大卫,

1
我建议您向Navicat支持人员询问此问题。他们非常有帮助(IMO)。根据该网站,它应该可以工作,但是我从来不需要测试/使用它。
pritaeas

4

您是否考虑过使用ETL工具?它们是外部的,我相信pentaho可以在Windows和Linux上运行,并且免费。 pentaho的网站


您好,欢迎光临本站!我知道Pentaho,但是我不知道它可以解决这个问题。它能解决思考吗?
大卫

1
在阅读问题时,我也在考虑ETL,但是我认为开销和学习曲线相当高。此外,我认为“连续”进行迁移并不容易。
DrColossos 2011年

谢谢!我个人对SSIS更有经验,但是SQL Server附带了它,您必须支付SQL许可证的费用。Pentaho是一种ETL工具,能够将数据从源迁移到目标。您需要正确的驱动程序才能与源/目标进行通信。任何ETL工具都有一些学习曲线,但这是您工具箱中的另一个工具,是吗?将有几个步骤1用于迁移​​数据,另一个用于迁移DDL更改。我将从1开始-只需移动数据(更轻松的步骤),一旦将其记下来,就可以更轻松地进行操作。
CleanFill 2011年

从这样的声音来看,鉴于使用新的ETL工具的学习过程和复杂性,我不确定使用Pentaho是否比用Java或Python从头开始编写Pentaho更快。
大卫

@David-学习新的ETL工具比重新发明IMO轮子要容易得多
杰克说,请尝试topanswers.xyz 2011年

2

我认为这是有可能的,但我认为没有多少人对此感到满意。在一般情况下,PosgreSQL和SQLite对表定义的处理方式非常不同。

CREATE TABLE test (trans_date date primary key);

如果我从SQLite转储该表的内容,这就是我得到的。

sqlite> .dump
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE test (trans_date date primary key);
INSERT INTO "test" VALUES('2011-01-01');
INSERT INTO "test" VALUES('Oh, bugger.');
COMMIT;

我认为在PostgreSQL方面,每一列都必须是VARCHAR()。编写脚本以将所有SQLite数据类型更改为VARCHAR()可能并不难。但这感觉就像是在沙滩上踢死鲸鱼一样可怕。


将所有列都转换为VARCHAR是不够的。应该有用于此或某些适当方法的工具。
大卫,

在上面的示例表中,您可以在PostgreSQL中创建一个带有日期列的表,但不能将两行都导入其中。因此,在一般情况下,除了VARCHAR(n)之外,我什么都不会工作。
Mike Sherrill'猫召回'

为什么会出现“哦,臭虫”。SQLite的价值?
大卫

2
@David:因为SQLite允许您在“日期”类型的列中存储“哦,臭虫”。SQLite使您几乎可以在任何列中存储任何内容。这是将SQLite迁移到任何近似SQL标准的dbms的主要问题之一。
Mike Sherrill'Cat Recall'

1

您可以使用

ESF数据迁移工具包

我已经尝试过了,它运作良好,并为您提供了从多种类型的数据库转换为多种类型的数据库的选项:例如sqlite,mysql,mssql,oracle,postgresql等等!

您也可以看看它的试用版/评估版,结果确实令人满意!


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.