出于学习目的,我试图从Teradata获取表列表 在Python中使用以下代码:
import jaydebeapi
import pandas as pd
try:
conn = jaydebeapi.connect(jclassname='com.teradata.jdbc.TeraDriver',
url="jdbc:teradata://10.10.10.10",
driver_args=['@user','@pss'],
jars=['/mnt/TERADATA/tdgssconfig.jar','/mnt/TERADATA/terajdbc4.jar'])
print("Connection was successful")
except Exception as e:
print(e)
#df = pd.read_sql_query('SELECT Databasename,TableName FROM dbc.tables WHERE tablekind = \'T\'',conn)
dfr = pd.DataFrame(df)
print(dfr.head(3))
上面的方法工作正常,但是当我尝试根据数据库名称获取表列表时,则工作不正常:
df = pd.read_sql_query('SELECT Databasename,TableName FROM dbc.tables WHERE tablekind = \'T\' and DatabaseName ='SALES'',conn)
dfr = pd.DataFrame(df)
print(dfr.head(3))
获取:
Error: Invalid Syntax
已经花了几个小时试图弄清楚,但无法通过它。问这个问题很愚蠢,但是请告诉我我要去哪里错了。
Ref: https://forgetcode.com/Teradata/1433-To-get-all-the-tables
答案 0 :(得分:1)
也许这只是Python语法。我希望:
df = pd.read_sql_query("""SELECT Databasename, TableName FROM dbc.tables WHERE tablekind = 'T' and DatabaseName = 'SALES'""", conn)
如您所写,SALES
位于字符串之外,无疑会导致语法错误。