Postgresql
如何使用 pgloader 將 sqlite 傳輸到帶有大寫表名的 postgres
我可以使用 pgloader 將我的 sqlite 數據庫傳輸到 postgres,如本快速入門頁面中所述。
但結果是我所有的表名都是小寫的。例如 TestName -> testname
有什麼方法可以在我的表名中保留大寫字母嗎?
在 SQLite 中,表名總是不區分大小寫的(即使引用了)。
在 PostgreSQL 中,不帶引號的標識符被折疊成小寫,但是對錶的搜尋是區分大小寫的。因此,獲得與 SQLite 查詢相同的行為的唯一方法是使用不帶引號的名稱,這意味著實際名稱必須小寫。換句話說:表名必須是
testname
為了讓查詢SELECT * FROM TestName
正常工作。
pgloader提供了一個新選項
quote identifiers
,我剛剛使用以下命令進行了測試,它就像一個魅力:load database from sqlite://path/to/sqlite.db into postgresql://postsql-connection-string with include drop, quote identifiers, create tables, create indexes, reset sequences set work_mem to '16MB', maintenance_work_mem to '512 MB';
有關更多詳細資訊,請參閱此討論:https ://github.com/dimitri/pgloader/issues/476#issuecomment-260458985