我有一个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
答案 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}