出于学习目的,我尝试使用以下代码在Python中从Teradata中获取表列表:
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
发布于 2018-06-21 05:57:46
也许这只是一个Python语法问题。我期望:
df = pd.read_sql_query("""SELECT Databasename, TableName FROM dbc.tables WHERE tablekind = 'T' and DatabaseName = 'SALES'""", conn)
正如您所写的,SALES
在字符串之外,这无疑会导致语法错误。
https://stackoverflow.com/questions/50957634
复制相似问题