使用 Python 批量插入 vertica

Dat*_*ast 4 python bulkinsert vertica

我正在使用 python 将数据(约 800 万行)从 oracle 传输到 vertica。我写了一个 python 脚本,它在 2 小时内传输数据,但我正在寻找提高传输速度的方法。

我正在使用的过程:

  • 连接到甲骨文
  • 将数据拉入数据帧(熊猫)
  • 逐行遍历数据帧中的行并插入vertica(cursor.execute),我想使用该dataframe.to_sql方法,但该方法仅限于几个数据库

有没有人使用更好的方法(批量插入或任何其他方法?)使用 python 将数据插入 vertica?

这是代码片段:

df = pandas.read_sql_query(sql,conn)
conn_vertica = pyodbc.connect("DSN=dsnname")
cursor = conn_vertica.cursor()

for i,row in df.iterrows():
    cursor.execute("insert into <tablename> values(?,?,?,?,?,?,?,?,?)",row.values[0],row.values[1],row.values[2],row.values[3],row.values[4],row.values[5],row.values[6],row.values[7],row.values[8])

cursor.close()
conn_vertica.commit()
conn_vertica.close()
Run Code Online (Sandbox Code Playgroud)

Sau*_*ena 5

来自vertica-python代码 https://github.com/uber/vertica-python/blob/master/vertica_python/vertica/cursor.py

with open("/tmp/file.csv", "rb") as fs: cursor.copy("COPY table(field1,field2) FROM STDIN DELIMITER ',' ENCLOSED BY '\"'", fs, buffer_size=65536)