SQLiteからPostgreSQLに移行するためのツール


11

SQLiteからPostgreSQLに継続的に移行する必要があります。継続的に、私は毎日SQLiteデータベースをPostgreSQLに再インポートすることを意味します。手動でPostgreSQLデータベースに変更を加える必要なく、SQLiteのテーブルに変更を加えることができれば素晴らしいと思います。私はPythonから移行を実行しますが、コマンドラインから制御できる任意の外部ツールを使用できます。ツールはLinuxで使用できる必要があり、Windowsでも実行できると便利です。


1
明確にするために、データとスキーマの両方を移行する必要がありますか?
h0tw1r3 2011年

1
PG wikiでチェックしましたか?
Denis de Bernardy、2011年

これを行う必要がある理由を詳しく説明していただけますか?おそらく、データベースを処理して変換するよりも根本的な問題に取り組むためのより良い方法があるでしょう。たとえば、CleanFillはETLの開発を提案しました。
Nick Chammas、2011

@ニック申し訳ありませんが、それは非常に特殊なケースであり、説明するには説明/議論が多すぎます。
David

@David-より多くの回答が必要な場合は、説明/議論を過度に行わずに、できる限り最善の方法でユースケースを別の段落に要約すると役立ちます。現状では、当て推量を多めにするように求められています。他のSEサイトへのリンクは、あなたがどこから来たのかを理解するのに役立つ場合に常に役立ちます。
ジャックはtopanswers.xyzしようと言う

回答:


3

Navicatを使用してデータベース間を移行しています(主にMSSQL / MySQL)。LinuxとWindowsで動作しますが、主にGUIツールです。プロファイルを作成すると、コマンドラインから開始できます。30日間の試用版をダウンロードできます。


先端をありがとう。単一のコマンドライン入力を使用して移行プロセス全体を実行できますか?
デビッド

1
Navicatサポートにこの質問をすることをお勧めします。彼らは非常に役に立ちます(IMO)。ウェブサイトによると、それはうまくいくはずですが、これをテスト/使用する必要はありませんでした。
プリテア

4

ETLツールの使用を検討しましたか?それらは外部のものであり、pentahoはWindowsとLinuxの両方で動作し、無料です。 ペンタホのサイト


こんにちは、サイトへようこそ!Pentahoについては知っていますが、これで解決できるかどうかは知りませんでした。それはそれを考えて解決できますか?
デビッド

1
質問を読みながらETLについても考えていましたが、オーバーヘッドと学習曲線はかなり高いと思います。さらに、移行を「継続的に」行うのは簡単ではないと思います。
DrColossos

ありがとう!私は個人的にはSSISの経験が豊富ですが、それはSQL Serverに付属しており、SQLライセンスの支払いが必要です。PentahoはETLツールであり、ソースから宛先にデータを移行することができます。ソース/デスティネーションと通信するには、正しいドライバーが必要です。ETLツールには学習曲線が少しありますが、ツールボックスの別のツールですよね?データを移行するためのいくつかのステップ1と、DDL変更を移行するための別のステップがあります。私は1から始めます-データを移動するだけ(簡単な手順)、それを取得したら、続行するのがより快適になります。
CleanFill

このサウンドから、習得曲線と新しいETLツールの使用の複雑さを考えると、Pentahoを使用する方が、JavaまたはPythonで一から作成するよりも速いかどうかはわかりません。
デビッド

@デビッド-新しいETLツールを学ぶことはそうIMOホイールを再発明するよりもかなり容易になることです
ジャックはtopanswers.xyz試し言う

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「Cat Recall」、

なぜ「ああ、バガー」を得るのですか。SQLiteからの値?
デビッド

2
@David:SQLiteでは「日付」型の列に「ああ、バガー」を保存できるため。SQLiteを使用すると、ほぼすべての列にほぼすべてを格納できます。これは、SQLiteをSQL標準に近い任意のdbmsに移行する際の主な問題の1つです。
Mike Sherrill 'Cat Recall'

1

使用できます

ESFデータ移行ツールキット

私はそれを試しました、それはうまくいき、複数のタイプのデータベースから複数のタイプのデータベースへの変換のためのオプションを提供します:sqlite、mysql、mssql、oracle、postgresqlなどの多く!

試用版/評価版もご覧ください。結果は本当に満足のいくものです。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.