Я использую python для выполнения базового ETL для передачи записей из базы данных mysql в базу данных postgres.Я использую Python для начала передачи:
код Python
source_cursor = source_cnx.cursor()
source_cursor.execute(query.extract_query)
data = source_cursor.fetchall()
source_cursor.close()
# load data into warehouse db
if data:
target_cursor = target_cnx.cursor()
#target_cursor.execute("USE {};".format(datawarehouse_name))
target_cursor.executemany(query.load_query, data)
print('data loaded to warehouse db')
target_cursor.close()
else:
print('data is empty')
Извлечение MySQL (extract_query):
SELECT `tbl_rrc`.`id`,
`tbl_rrc`.`col_filing_operator`,
`tbl_rrc`.`col_medium`,
`tbl_rrc`.`col_district`,
`tbl_rrc`.`col_type`,
DATE_FORMAT(`tbl_rrc`.`col_timestamp`, '%Y-%m-%d %T.%f') as `col_timestamp`
from `tbl_rrc`
PostgreSQL (loading_query)
INSERT INTO geo_data_staging.tbl_rrc
(id,
col_filing_operator,
col_medium,
col_district,
col_type,
col_timestamp)
VALUES
(%s,%s,%s,%s,%s);
Следует отметить, что для идентификатора есть ограничение PK.
Проблема в том, что, хотя у меня нет ошибок, я не вижу ни одной записи в целевой таблице.Я проверил это, вставив запись вручную, а затем снова запустив.Код выдал ошибку, нарушающую ограничение PK.Так что я знаю, что он находит стол.
Любое представление о том, чего мне не хватает, я был бы очень признателен.