我使用以下代码段将 CSV 中的数据上传到位于 Amazon EC2 上的 SQL Server 实例中的表格中。根据我的阅读,似乎Amazon EC2不支持 BULK INSERT 操作或 OPENROWSET ,因此上传速度显然不足。
我的问题是,有更快的上传方式吗?
with open(file_path, 'r') as f:
reader = csv.reader(f)
columns = next(reader)
query = 'insert into myTable({0}) values ({1})'
query = query.format(','.join(columns), ','.join('?' * len(columns)))
cursor = connection.cursor()
for data in reader:
cursor.execute(query, data)
cursor.commit()
cursor.close()
connection.close()
答案 0 :(得分:0)
绝对。您将分别添加每一行。在一个插入中提供多行以显着提高速度。我确信插件的大小有限制......一次大约100或1000行应该是一个不错的起点,它们不是非常大的行。
要做到这一点,你需要在数组中累积值列表,然后一旦数组达到大小限制,就用插入清除数据。
确保在读取所有错误后再次执行刷新,因为csv可能没有可以按您选择的大小整除的行数。