我在分割bulk insert的值时遇到了问题,因为我的想法是一次每10个值插入一次,并读取CSV文件的全部内容
代码已经在读取整个CSV文件的单行中插入,但是我无法执行值的划分,在将来的情况下,一次插入10000个值。在
def bulk_insert(table_name, **kwargs):
mysqlConnection = MySqlHook(mysql_conn_id='id_db')
a = mysqlConnection.get_conn()
c = a.cursor()
with open('/pasta/arquivo.csv') as f:
reader = csv.reader(f, delimiter='\t')
sql ="""INSERT INTO user (id,user_name) VALUES"""
for row in reader:
sql +="(" + row[0] + " , '" + row[1] + "'),"
c.execute(sql[:-1])
a.commit()
像这样的事情应该行得通。
batch_csv
函数是一个生成器,在每次迭代中生成一个大小为size
的行的列表。在bulk_insert函数被修改为使用参数替换和游标的
executemany
方法。参数替换比手动构造SQL更安全。在cursor.executemany
可以像在原始函数中那样批处理SQL插入,尽管这是依赖于实现的,应该进行测试。在相关问题 更多 >
编程相关推荐