![](/img/trans.png)
[英]Errno 2 No such file or directory error while importing a python script from a sub-folder
[英]Error while importing file into DB2 from python script
嘗試使用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()
IMPORT不是SQL語句。 這是一個DB2命令行處理器(CLP)命令,因此只能由該CLP運行。
通過調用ADMIN_CMD()存儲過程,可以為某些CLP命令提供SQL接口,請查閱手冊: 使用ADMIN_CMD導入
您還可以選擇逐行讀取文件並將其插入數據庫。 這肯定比任何本地導入操作都要慢。 假設您的分隔文件結構為,文件名為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()
放置,您可能希望分批提交以提高性能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.