我正在尝试使用特拉达塔斯格,而为FastExportTable提供的示例代码正在为我抛出错误。
代码:
#!~/miniconda3/bin/python
# This sample program demonstrates how to FastExport rows from a table.
import teradatasql
with teradatasql.connect (host='TD_DB_IP', user='db_user_name', password='db_password', database='teradata_db_name') as con:
with con.cursor () as cur:
with con.cursor () as cur2:
sTableName = "FastExportTable"
try:
sRequest = "DROP TABLE " + sTableName
print (sRequest)
cur.execute (sRequest)
except Exception as ex:
print ("Ignoring", str (ex).split ("\n") [0])
sRequest = "CREATE TABLE " + sTableName + " (c1 INTEGER NOT NULL, c2 VARCHAR(10))"
print (sRequest)
cur.execute (sRequest)
try:
sInsert = "INSERT INTO " + sTableName + " VALUES (?, ?)"
print (sInsert)
cur.execute (sInsert, [
[1, None],
[2, "abc"],
[3, "def"],
[4, "mno"],
[5, None],
[6, "pqr"],
[7, "uvw"],
[8, "xyz"],
[9, None],
])
sSelect = "{fn teradata_try_fastexport}SELECT * FROM " + sTableName
print (sSelect)
cur.execute (sSelect)
[ print (row) for row in sorted (cur.fetchall ()) ]
sRequest = "{fn teradata_nativesql}{fn teradata_get_warnings}" + sSelect
print (sRequest)
cur2.execute (sRequest)
[ print (row) for row in cur2.fetchall () ]
sRequest = "{fn teradata_nativesql}{fn teradata_get_errors}" + sSelect
print (sRequest)
cur2.execute (sRequest)
[ print (row) for row in cur2.fetchall () ]
sRequest = "{fn teradata_nativesql}{fn teradata_logon_sequence_number}" + sSelect
print (sRequest)
cur2.execute (sRequest)
[ print (row) for row in cur2.fetchall () ]
finally:
sRequest = "DROP TABLE " + sTableName
print (sRequest)
cur.execute (sRequest)错误:
Traceback (most recent call last):
File "./sample_tdsql_fastexporttable.py", line 38, in <module>
cur.execute (sSelect)
File "~/miniconda3/lib/python3.6/site-packages/teradatasql/__init__.py", line 649, in execute
self.executemany (sOperation, None, ignoreErrors)
File "~/miniconda3/lib/python3.6/site-packages/teradatasql/__init__.py", line 896, in executemany
raise OperationalError (sErr)
teradatasql.OperationalError: [Version 16.20.0.62] [Session 590874] [Teradata Database] [Error 3706] Syntax error: expected something between the beginning of the request and the word 'teradata_try_fastexportSELECT'.只有我在github上为这个模块提供的示例程序中所做的更改是添加database='teradata_db_name'。如果删除database='teradata_db_name'并运行相同的代码,则在第19行:teradatasql.OperationalError: [Version 16.20.0.62] [Session 590869] [Teradata Database] [Error 2644] No more room in database SVC_DEV_XDW_VANTAGE.上会出现错误。
我们使用的是Python 3.6.0 :: Continuum Analytics, Inc.
有谁有同样的错误吗?我在这里错过了什么?任何解决这一问题的信息都将不胜感激。
发布于 2022-07-26 20:40:48
若要解决此问题,请升级到teradatasql 17.10.0.6 -2022年2月4日或更高版本.撰写本文时,"pip install teradatasql -升级“将为您提供17.20.0.0版。
teradatasql记录在这里:https://pypi.org/project/teradatasql/和“GOSQL73写CSV文件”显示了17.10.0.6更新。
如果您正在运行木星,请确保重新启动内核,否则该错误将一直持续到重新启动。
升级之后,这个python指令运行良好。
cur.execute("{fn teradata_write_csv(mycsvfilename.csv)}select * dbc.dbcinfo;")
FastExport的工作还包括:
cur.execute("{fn teradata_try_fastexport}{fn teradata_write_csv(mycsvfilename.csv)}select * from dbc.dbcinfo;")
dbc.dbcinfo确实不值得快速导出的开销,但这个示例适用于每个人。
https://stackoverflow.com/questions/70382960
复制相似问题