[解決済み] SQLITE SQLダンプファイルをPOSTGRESQLに変換する
質問
私は、POSTGRESQLで本番環境とSQLITEデータベースを使用して開発をしてきました。 ローカル データベースを膨大な量のデータで更新したばかりで、特定のテーブルを本番用データベースに転送する必要があります。
実行に基づくと
sqlite database .dump > /the/path/to/sqlite-dumpfile.sql
を実行すると、SQLITEは以下のフォーマットでテーブルダンプを出力します。
BEGIN TRANSACTION;
CREATE TABLE "courses_school" ("id" integer PRIMARY KEY, "department_count" integer NOT NULL DEFAULT 0, "the_id" integer UNIQUE, "school_name" varchar(150), "slug" varchar(50));
INSERT INTO "courses_school" VALUES(1,168,213,'TEST Name A',NULL);
INSERT INTO "courses_school" VALUES(2,0,656,'TEST Name B',NULL);
....
COMMIT;
上記を本番サーバーにインポートできるPOSTGRESQL互換のダンプファイルに変換するにはどうすればよいですか?
どのように解決するのですか?
そのダンプファイルをそのまま
psql
:
/path/to/psql -d database -U username -W < /the/path/to/sqlite-dumpfile.sql
もし
id
列を "auto increment" にしたい場合、テーブル作成行でその型を "int" から "serial" に変更します。そうすると、PostgreSQLはその列にシーケンスを付加し、NULL IDでのINSERTが自動的に次の利用可能な値を割り当てるようにします。また、PostgreSQLは
AUTOINCREMENT
コマンドを認識しませんので、これらを削除する必要があります。
また
datetime
カラムをチェックし、SQLite スキーマの
timestamp
に変更してください。(感謝
クレイ
に感謝します)。
もし SQLite にブーリアン演算があれば
1
と
0
から
1::boolean
であり
0::boolean
(それぞれ) またはダンプのスキーマセクションでbooleanカラムを整数に変更し、インポート後にPostgreSQL内で手作業でそれらを修正することができます。
SQLiteにBLOBがある場合、スキーマで
bytea
. おそらく、いくつかの
decode
の呼び出しも必要でしょう。
. たくさんのBLOBを扱う場合は、SQLを混乱させるよりも、好きな言語でクイック&ダーティなコピー機を書く方が簡単かもしれません。
通常、外部キーがある場合、おそらく
set constraints all deferred
を参照して、挿入順序の問題を避けるために、コマンドをBEGIN/COMMITペアの内部に配置します。
おかげさまで Nicolas Riley に感謝します。
もし、あなたが
`
がある場合、それらを削除する必要があります。
PostGRESQLもまた
unsigned
列を認識しないので、これを削除するか、このようなカスタムメイドの制約を追加するとよいでしょう。
CREATE TABLE tablename (
...
unsigned_column_name integer CHECK (unsigned_column_name > 0)
);
SQLite はデフォルトで null 値を
''
であるのに対して、PostgreSQLはそれらを
NULL
.
SQLiteダンプファイルの構文はPostgreSQLとほぼ互換性があるように見えますので、いくつかのパッチを適用して
psql
. SQLのINSERTを通して大きなデータの山をインポートするのは時間がかかるかもしれませんが、うまくいくでしょう。
関連
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] PostgreSQLの場合。PostgreSQLのテーブルを表示する
-
[解決済み] PostgreSQLの "DESCRIBE TABLE"
-
[解決済み] PostgreSQL コマンドラインユーティリティ: psql を終了する方法
-
[解決済み] PostgreSQLのユーザーパスワードを変更する方法を教えてください。
-
[解決済み] ATTACHで開いたSQLiteデータベースファイルのテーブルを一覧表示するにはどうすればよいですか?
-
[解決済み] どのバージョンのPostgreSQLを使用していますか?
-
[解決済み] PostgreSQLからのPL/pgSQL出力をCSVファイルに保存する
-
[解決済み] PostgreSQLデータベースへのSQLダンプのインポート
-
[解決済み] データベースに郵便番号を格納する必要があります。カラムの大きさはどのくらいにすればよいでしょうか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン