以下は、Jaydebeapi を使用して JDBC 接続を介して Teradata に接続するコードです。razorsql GUI を使用してクエリを実行すると、わずか 15 秒しかかかりません。以下のコードを実行すると、query1 を実行するだけで 20 分以上かかりました。
Jaydebeapi に何か問題がありますか、それともクエリを最適化して Jpype を使用することで高速化できますか?
#-*- coding: utf-8 -*-
import jaydebeapi
import jpype
import pandas as pd
import numpy as np
import collections
query_dict=collections.OrderedDict()
connection = jaydebeapi.connect('com.teradata.jdbc.TeraDriver', ['my_db_name','my_username','my_password'], ['/Applications/drivers/tdgssconfig.jar','/Applications/drivers/terajdbc4.jar'],)
cur = connection.cursor()
query_name_list=['query1','query2']
query1= """select ......"""
query2= """ select ....."""
for i in query_list:
query_dict[i]=locals()[i]
print query_dict.keys()
for index in range(len(query_list)):
tera_query=query_dict.values()[index]
cur.execute(tera_query)
print "executing ... "
result=cur.fetchall()
print "fetching results ... "