错误而导入文件到DB2的Python脚本(Error while importing file in

2019-10-18 03:24发布

提示以下错误:试图导入一个^分隔的文件到使用Python 2.4.3的DB2数据库。

错误:

 Traceback (most recent call last): File "C:\Python25\Usefulscripts\order.py", line 89, in <module> load_order_stack() File "C:\Python25\Usefulscripts\order.py", line 75, in load_order_stack conn2.execute(importTmp) ProgrammingError: ('42601', '[42601] [IBM][CLI Driver][DB2/LINUXX8664] SQL0104N An unexpected token "orders_extract" 

之后发现“进口”。

码:

import pyodbc

def load_order_stack():
    try:
        conn2 = pyodbc.connect('DSN=db2Database;UID=ueserid;PWD=password')
        importTmp = ("import from orders_extract of del modified by coldel0x5E"
                     "insert_update into test.ORDERS_Table (ORDER_ID,item,price);")
        conn2.execute(importTmp)
        conn2.commit()

Answer 1:

IMPORT不是一个SQL语句。 这是一个DB2命令行处理器(CLP)命令,因此可以仅由所述电运行。

有通过调用所述ADMIN_CMD()存储过程的SQL接口一些CLP命令,请检查手册: 使用ADMIN_CMD IMPORT



Answer 2:

此外,还可以读取该文件,一行一行,并插入到你的数据库的选项。 这绝对会比任何本地导入操作慢。 假设你分隔的文件结构,并且该文件名为input.txt

ORDER_ID^item^price
1^'bat'^50.00
2^'ball'^25.00

码:

import csv
import pyodbc

connection = pyodbc.connect('DSN=db2Database;UID=ueserid;PWD=password')
cursor = connection.cursor()

with open('input.txt', 'rb') as f:
    rows = csv.reader(f, delimiter='^')
    # get column names from header in first line
    columns = ','.join(next(rows))
    for row in rows:
        # build sql with placeholders for insert
        placeholders = ','.join('?' * len(row))
        sql = 'insert into ({}) values ({});'.format(columns, placeholders)

        # execute parameterized database insert
        cursor.execute(sql, row)
        cursor.commit()

玩弄commit()的位置,你可能要分批致力于提高性能。



文章来源: Error while importing file into DB2 from python script