python sqllite3按字符串列水平分区

时间:2018-10-04 09:26:40

标签: python sqlite

我有一个30gb的sqllite3数据库,其中有2500万行。我想按字符串列对表进行分组,并为每个组创建一个新表,以该字符串命名并包含所有列。 python和sqllite3可以做到吗?我可以在python中处理块,但是有sql命令吗?

开始表:name = 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

结果表:

name = bye

a   b   c   d
bye 7   342 lulu
bye 5   433 abc
bye 4   234 abd

name = hi

a   b   c   d
hi  4   234 lala
hi  56  435 abc
hi  3   455 a

1 个答案:

答案 0 :(得分:1)

如果您熟悉如何使用sqlite,则可以利用pandas并将表拆分为大块,然后将它们推回到数据库中。

这是分割数据的方法:

import pandas as pd

df = pd.DataFrame({'a': ['hi', 'bye', 'bye', 'bye', 'hi', 'hi'],
                   'c': [234, 342, 433, 234, 435, 455],
                   'b': [4, 7, 5, 4, 56, 3],
                   'd': ['lala', 'lulu', 'abc', 'abd', 'abc', 'a']})
dfs = {i: df.loc[df['a']==i] for i in df['a'].unique()}
dfs
#{'bye':      a    b  c    d
#          1  bye  7  342  lulu
#          2  bye  5  433   abc
#          3  bye  4  234   abd,
# 'hi':       a   b    c     d
#          0  hi   4  234  lala
#          4  hi  56  435   abc
#          5  hi   3  455     a}