что популярный вариант это .to_sql, но есть ли best practices лучше привести типы колонок самого датафрейма или уже на этапе загрузки в .to_sql указать в опции dtype. Также как более правильно определять primary and foreign keys? Есть ли лучшие альтернативы .to_sql?
я ровно так и делаю, только использую бекенд pyarrow. И самая главная проблема - в какой-то рандомный момент pandas загружает float из одного PG, видит что значение нулевое "0.0" и в датафрейме образуется NaN! А при записи через to_sql он трансформируется в NULL. Так что получается лучше указывать dtype явно, если такая возможность есть.
Df -> csv -> copy
Хорошая альтернатива to_sql описана в документации pandas. Как уже отметили, это экспорт dataframe'а в CSV и потом чтение через команду COPY <table> (columns) FROM STDIN. https://pandas.pydata.org/docs/user_guide/io.html#insertion-method
Обсуждают сегодня