Sqlite
Python SQLite3按字元串列水平分區
我有一個 30 GB 的 SQLite 3 數據庫,其中包含一個包含 2500 萬行的表。我想按字元串列對錶進行分組,並為每組記錄創建一個新表,以字元串命名並包含所有列。
這對 Python 和 SQLite 3 可行嗎?我可以在 Python 中處理塊,但是有 SQL 命令嗎?
起始表
all_entries
a b c d hi 4 234 lala bye 7 342 lulu bye 5 433 abc bye 4 234 abd hi 56 435 abc hi 3 455 a
結果表
bye
a b c d bye 7 342 lulu bye 5 433 abc bye 4 234 abd
hi
a b c d hi 4 234 lala hi 56 435 abc hi 3 455 a
這可以根據官方 SQLite 文件實現如下。
對於
bye
表格,您可以使用以下內容:CREATE TABLE bye AS SELECT a, b, c, d, FROM all_entries WHERE a = 'bye'
…對於
hi
桌子:CREATE TABLE bye AS SELECT a, b, c, d, FROM all_entries WHERE a = 'hi'
參考: CREATE TABLE(SQLite 理解的 SQL)
如果這只是您希望實現的目標的臨時解決方案,請添加
TEMPORARY
關鍵字:CREATE TEMPORARY TABLE bye AS...
這種方法存在一些限制,在參考文章中進行了描述。
使用 CREATE TABLE AS 創建的表沒有 PRIMARY KEY 也沒有任何類型的約束。每列的預設值為 NULL。新表的每一列的預設排序規則是 BINARY。
使用 CREATE TABLE AS 創建的表最初由 SELECT 語句返回的數據行填充。行被分配連續升序的 rowid 值,從 1 開始,按照 SELECT 語句返回的順序。
你可能不得不在 Stack Overflow 上發布一個問題以獲取 Python 解決方案。