У меня есть df, который я хочу переместить в таблицу teradata.Я использую структуру, которая обсуждалась на этой платформе.Однако я получаю несколько ошибок.Вся логика загрузки df в teradata такова:
1) Если таблица не существует, создайте таблицу, иначе пропустите создание.
2) Начните загрузку df в таблицу.(Обратите внимание, что я передам несколько файлов xlsx в df и в конечном итоге добавлю их в таблицу teradata)
Я написал скрипт bteq для создания таблицы, которая выглядит следующим образом:
FROM DBC.TABLES WHERE DATABASENAME = 'abc' AND TABLENAME = 'sample';
.IF ACTIVITYCOUNT <> 0 THEN .GOTO SKIP_CREATION
.IF ACTIVITYCOUNT = 0 THEN .GOTO TABLE_NOT_EXISTS
.LABEL TABLE_NOT_EXISTS
CREATE TABLE abc.sample (
col1 VARCHAR(400) CHARACTER SET LATIN NOT CASESPECIFIC,
col2 VARCHAR(400) CHARACTER SET LATIN NOT CASESPECIFIC,
.
.
col23 TIMESTAMP(0) WITH TIME ZONE FORMAT 'YYYY-MM-DD HH:MI:SSZ',
col24 TIMESTAMP(0) WITH TIME ZONE FORMAT 'YYYY-MM-DD HH:MI:SSZ'
);
.LABEL SKIP_CREATION
.LOGOFF
Мой код Python для перемещения df к teradata:
df=some data frame
host,username,password = 'host','username', "password"
num_of_chunks = 1000
insert_query= "INSERT INTO abc.sample VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"
udaExec = teradata.UdaExec (appName="IMC", version="1.0", logConsole=False)
with udaExec.connect(method="odbc",system=host, username = username,
password=password, driver="Teradata") as session:
file_exist=session.execute(file=r"Path of the bteq file" ,fileType="bteq",ignoreErrors=[3803])
schedule_chunks = np.array_split(df, num_of_chunks)
for i,_ in enumerate(schedule_chunks):
data = [tuple(x) for x in schedule_chunks[i].to_records(index=False)]
session.executemany(insert_query, data,batch=True)
Когда я запускаю это, я получаю следующее сообщение об ошибке:
DatabaseError: [HY000] [Teradata] [Драйвер ODBC Teradata] [База данных Teradata] Неверная временная метка.
Может ли кто-нибудь помочь мне с сообщением, если я ошибаюсь?Также нужно некоторое предложение, если я правильно пишу скрипт bteq.Я хочу не бросать таблицы и не создавать новые каждый раз.