无需BULK INSERT或OPENROWSET即可快速上传数据

时间:2018-01-05 15:26:31

标签: sql-server python-3.x csv amazon-ec2

我使用以下代码段将 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()

1 个答案:

答案 0 :(得分:0)

绝对。您将分别添加每一行。在一个插入中提供多行以显着提高速度。我确信插件的大小有限制......一次大约100或1000行应该是一个不错的起点,它们不是非常大的行。

要做到这一点,你需要在数组中累积值列表,然后一旦数组达到大小限制,就用插入清除数据。

确保在读取所有错误后再次执行刷新,因为csv可能没有可以按您选择的大小整除的行数。