我們正在開發一個網站,當我們在本地開發(我們其中一個來自Windows)時,我們使用sqlite3,但在服務器(linux)上使用postgres。我們希望能夠將生產數據庫導入到我們的開發過程中,所以我想知道是否有辦法將postgres數據庫轉儲轉換爲sqlite3可以理解的東西(只是給它提供了postgres的傾銷SQL給了很多,很多錯誤)。或者只是在Windows上安裝postgres會更容易些?謝謝。如何將postgres數據庫轉換爲sqlite
回答
有一些轉換工具各地:
http://sqlite.com/cvstrac/wiki?p=ConverterTools
難道是容易只是在Windows上安裝的Postgres?
也許,這樣做是非常簡單的。
這是很容易在此描述我使用水龍頭寶石做: http://railscasts.com/episodes/342-migrating-to-postgresql
而且我使用Postgres.app在我的Mac開始(無需要安裝,刪除應用程序在你的應用程序目錄,雖然可能必須添加一行到您的PATH環境變量,如文檔中所述),並使用Induction.app作爲GUI工具來查看/查詢數據庫。
我發現this blog entry這將指導您完成這些步驟:
創建PostgreSQL數據庫的轉儲。
ssh -C [email protected] pg_dump --data-only --inserts YOUR_DB_NAME > dump.sql
刪除/修改轉儲。
- 刪除線開始
SET
- 刪除線開始
SELECT pg_catalog.setval
- 替換爲 '
t
' - 真替換爲 '
f
' 假
- 刪除線開始
添加
BEGIN;
作爲第一線和END;
作爲最後一行重新創建一個空的開發數據庫。
bundle exec rake db:migrate
導入轉儲。
sqlite3 db/development.sqlite3 sqlite> delete from schema_migrations; sqlite> .read dump.sql
當然通過ssh連接並創建一個新的數據庫使用耙子是可選
對我來說,'t'和'f'不起作用,我不得不使用'1'和'0'來描述這些帖子:http://stackoverflow.com/questions/5768364/activerecordstatementinvalid-sqlite3sqlexception-no-這種列真的 – neRok 2016-06-11 03:35:59
斑點保存在不同的格式。 sqlite使用x'010101',而postgres'\ x0101' – 2016-10-18 11:57:11
STEP1:使你的數據庫結構的轉儲和數據
pg_dump --create --inserts -f myPgDump.sql -d myDatabaseName -U myUserName -W myPassword
STEP2:刪除一切除了myPgDump外的CREATE TABLES和INSERT語句。SQL(使用文本編輯器)
STEP3:初始化SQLite數據庫通過結構和數據你的Postgres轉儲
sqlite3 myNewSQLiteDB.db -init -myPgDump.sql
STEP4:用你的數據庫;)
我想你的開發環境,只需切換到PostgreSQL是在一個數據庫之上開發的(尤其是像SQLite一樣寬鬆和寬容的),但部署在另一個數據庫上(特別是像PostgreSQL那樣嚴格的數據庫)通常是惡化和惡作劇的祕訣。 – 2011-05-27 07:15:49
迴應mu的迴應,不要這樣做。不要這樣做。不要這樣做。開發和部署在同一件事情上。否則做不好的工程實踐。 – Kuberchaun 2011-05-27 14:38:33
[在ServerFault上的同樣的問題。](https://stackoverflow.com/questions/6148421/how-to-convert-a-postgres-database-to-sqlite) – Zaz 2015-05-11 20:26:55