我想使用Python(dataframe)将所有数据(大约200000行)从csv文件(有4列)导入到sqlite3数据库中已创建的表(表有5列)中。csv和表格中的数据类型相互满足。问题是,在表中有一个额外的列index_of(Primary Key)
这是我的csv文件的前3行:
这就是我所能做的,我想如果它能工作,大约需要5-6个小时,因为在这段代码中,我使用for循环读取每一行:
connection = _sqlite3.connect("db_name.sqlite")
cursor = connection.cursor()
with open('path_to_csv', 'r') as file:
no_records = 0
for row in file:
cursor.execute("INSERT INTO table_name (index_of, high, low, original, ship_date) VALUES (?,?,?,?,?)", row.split(","))
connection.commit()
no_records += 1
connection.close()
但它向我显示了一个错误:发生了异常:操作错误 4列5个值
拜托,你能帮我做这个吗:
如何使用Python快速导入200000行
如何将csv文件中的所有列导入表的特定列
您需要为第5列提供默认值
如果在每个SQL语句中插入100-200行的块,还可以提高脚本的性能
user3380595已经在their answer中指出,您需要为列
index_of
提供一个值我创建了200000行测试数据,加载速度非常快(不到2秒)。请参阅使用^{} 和^{} 的第一个示例
正如user3380595所提到的,如果您关心内存和性能,可以分块加载数据。这个场景实际上加载得稍微慢一点。参见使用^{} 和^{} 的第二个示例
使用
csv
和sqlite3
设置测试环境
加载数据
使用
pandas
和sqlalchemy
设置测试环境
加载数据(以块为单位)
或者,您也可以使用^{} 来处理行块,而不是使用
pandas
或者,您可以使用^{} (示例假定现有数据库带有表引号)并并行写入数据。然而,我不认为你的数据需要它
相关问题 更多 >
编程相关推荐