Я работаю с клиентом, у которого есть база данных 4D. Tableau не будет подключаться к нему. (Это совсем другая проблема, и если вы знаете ответ на этот вопрос, дайте мне знать.) Что мы решили сделать, так это сохранить две копии данных. Я создаю инструмент в Python, который берет любую произвольную таблицу из своей базы данных и сохраняет ее копию в базе данных MySQL. Затем он будет периодически запускаться и обновлять данные по мере добавления новых данных.
Я бы предпочел использовать SqlAlchemy, но он не поддерживает 4D. Итак, я использую pyodb c с pandas. Я использую
data_chunks = pandas.read_sql("SELECT * FROM table_name", con=pyodbc_connection, chunksize=100000)
Затем я оборачиваюсь и использую
chunk_df.to_sql("table_name", con=sqlalchemy_mysql_connection, index=False, if_exists="append")
, чтобы записать его в базу данных MySQL.
К сожалению, в некоторых таблицах, в которых я читаю, есть поврежденные данные, и я получаю ValueError
о том, что The year xxxxx
находится вне диапазона.
Последняя функция, вызванная в след был data = cursor.fetchmany(chunksize)
, который я считаю, от pyodb c.
Как я могу прочитать данные из любой произвольной таблицы и уметь корректно обрабатывать поврежденные данные и продолжать работу?