gpt4 book ai didi

python - 通过 Python 使用 BULK INSERT

转载 作者:行者123 更新时间:2023-11-29 15:32:09 25 4
gpt4 key购买 nike

我在拆分批量插入的值时遇到问题,因为这个想法是让 1 一次插入每 10 个值并读取 CSV 文件的全部内容

代码已经插入一行读取整个 CSV 文件,但在将来一次插入 10000 个值的情况下,我无法执行 VALUES 的除法。

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 插入,尽管这是依赖于实现的并且应该进行测试。

def batch_csv(size=10):
with open('/pasta/arquivo.csv') as f:
reader = csv.reader(f, delimiter='\t')
batch = []
for row in reader:
batch.append(row)
if len(row) == size:
yield batch
del batch[:]
yield batch


def bulk_insert(table_name, **kwargs):

mysqlConnection = MySqlHook(mysql_conn_id='id_db')
a = mysqlConnection.get_conn()
c = a.cursor()
sql ="""INSERT INTO user (id,user_name) VALUES (%s, %s)"""
batcher = batch_csv()
for batch in batcher:
c.executemany(sql, [row[0:2] for row in batch])

a.commit()

关于python - 通过 Python 使用 BULK INSERT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58636237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com