我有一个CSV文件,大小为3 GB。
我想快速从该文件中搜索列表的内容。
有人建议将CSV转换为BLF文件并应用bloom过滤器。
我是一个初学者,我对此一无所知。
如果有人能提供一个简短的工作代码或一个链接到一个有详细解释的页面,那将是非常有帮助的。
您可以将文件转换为数据库(SQLite(:
import csv, sqlite3
# Change column names
fields = ('code1', 'code2', 'firstname', 'lastname', 'genre', 'city', 'country')
# Create the database and the unique table
con = sqlite3.connect("data.db")
cur = con.cursor()
cur.execute(f"CREATE TABLE tbl {fields};")
# Read the csv file and insert rows to database
reader = csv.reader(open('data.csv'))
cur.executemany(f"INSERT INTO tbl {fields} VALUES (?, ?, ?, ?, ?, ?, ?);", reader)
# Create some indexes to increase speed of queries
cur.execute("CREATE INDEX idx_fullname ON tbl (firstname, lastname);")
cur.execute("CREATE INDEX idx_location ON tbl (city, country);")
# Commit and close (Mandatory!)
con.commit()
con.close()
之后,您可以选择查询数据库:
- sqlitebrowser
- Python/sqlite(与上面类似,但带有SELECT语句(
- Pandas(pd.read_sql(