微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在python中读取Teradata表的性能降低

如何解决在python中读取Teradata表的性能降低

我正在尝试从teradata读取表,这需要很多时间。我的表有500万行和60列,加载到内存需要30分钟。我正在使用teradatasql软件包,但是同一张表花了5分钟才能用RJDBC软件包加载到R中。

Python代码(这需要30分钟)

import teradatasql
import pandas as pd

conn = teradatasql.connect(host=host,user=user_name,password=password,database=database)
df = pd.read_sql("SELECT * FROM big_table",conn)

R码(仅需3分钟)

library(RJDBC)

# teradata conecction
con_tera <- dbConnect(drv_tera,"jdbc:teradata://{ip_host}/DATABASE=DBI_MIN,DBS_PORT=1025",Sys.getenv("tera_DB_USER"),Sys.getenv("tera_DB_PASS"))

# create query
final_query <- 'select * from big_table'

# get data
dataset_caribu <- dbGetQuery(con_tera,final_query)

我试图在python中增加游标的数组大小,但并没有大大提高执行时间。

解决方法

pandas.read_sql比直接使用teradatasql驱动程序慢。

这是一个简单的Python脚本,我用它来测试500万行和60列,其中80%的非NULL和20%的NULL列值:

fetchall took 638.6090559959412 seconds,or 10.64348426659902 minutes,and returned 5000000 rows
read_sql took 2293.84486413002 seconds,or 38.23074773550034 minutes,and returned 5000000 rows

我的结果是:

{{1}}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。