需要使用pyodbc以较小的批次插入Teradata表

时间:2019-07-18 18:41:06

标签: python pyodbc

我正试图通过pyodbc将熊猫数据框中的数据插入Teradata表中。

我能够成功插入一小部分数据示例,但是,当我尝试插入整个数据帧(大约125k行)时,收到以下错误消息:[Teradata] [ODBC Teradata驱动程序] SQL请求超出了允许的最大值长度为1 MB。

经过一些研究,似乎我的插入语句太大了,因此我想将其分解为较小的批处理大小。我研究了cursor.executemany及其必需的参数,但是我可以找到任何地方来定义批处理大小。

import pyodbc
import pandas as pd

# Delete All Records pertaining to Max Report Month
cursor = connection.cursor()
sql_del = "DELETE FROM database.table WHERE RPT_MTH = '" + max_mth + "';"
cursor.execute(sql_del)
connection.commit()

# Insert All Predictions
data = df_prod.values.tolist()
cursor.fast_executemany = True
cursor.executemany('INSERT INTO database.table VALUES (?,?,?,?)', data)
connection.commit()

# Close Connections
cursor.close()
connection.close()

1 个答案:

答案 0 :(得分:0)

@贾斯汀 如果您每天的插入次数有限制,则可以尝试直接从File使用Teradata建议的实用程序,例如TPT,MLOAD,而不是使用Py。