所以知道我希望将sqlachemy和teradata方言一起使用来将某些csv推入表中。 到目前为止,我写的是这个:
import pandas as pd
from sqlalchemy import create_engine
user = '******'
pasw = '******'
host = 'FTGPRDTD'
DATABASE = 'DB_FTG_SRS_DATALAB'
# connect
td_engine = create_engine('teradata://'+ user +':' + pasw + '@'+ DBCNAME + ':1025/')
print ('ok step one')
print(td_engine)
# execute sql
df = pd.read_csv(r'C:/Users/c92434/Desktop/Load.csv')
print('df chargé')
df.to_sql(name= 'mdc_load', con = td_engine, index=False, schema = DATABASE,
if_exists='replace')
print ('ok step two')
这是我收到的错误消息:
DatabaseError:(teradata.api.DatabaseError)(0,'[08001] [TPT] [ODBC SQL Server有线协议驱动程序]无效的连接数据。,[TPT] [ODBC SQL Server有线协议驱动程序]无效的连接属性字符串:DBCNAME。”) (此错误的背景位于:http://sqlalche.me/e/4xp6)
我能做什么?
最诚挚的问候
Kair0
答案 0 :(得分:0)
“ teradata”方言(sqlalchemy-teradata模块)依赖于在客户端平台上单独安装的Teradata ODBC驱动程序。如果您安装了多个ODBC驱动程序,其名称中包含单词Teradata(例如,因为您已将TPT与其他数据库平台的Teradata品牌驱动程序一起安装),则可能需要通过附加可选选项来明确指定要使用的驱动程序。连接字符串的参数,例如
td_engine = create_engine('teradata://'+ user +':' + pasw + '@'+ DBCNAME + ':1025/?driver=Teradata Database ODBC Driver 16.20')
或者,您可以使用不需要ODBC的“ teradatasql”方言(teradatasqlalchemy模块)。
答案 1 :(得分:0)
希望你现在已经解决了这个问题,但我已经成功了。查看您提供的内容,您设置的主机信息似乎未在连接字符串中使用。我的示例包含 dtype 参数,我用它来定义每列的数据类型,这样它们就不会显示为 CLOB。
database = "database_name"
table = "mdc_load"
user = "user"
password = "password"
host = 'FTGPRDTD:1025'
td_engine = create_engine(f'teradata://{user}:{password}@{host}/?database={database}&driver=Teradata&authentication=LDAP')
conn = td_engine.connect()
data.to_sql(name=table, con=conn, index=False, if_exists='replace', dtype=destType)
conn.close()