Wpis z mikrobloga

Ładuje dane do postgresa, najszybszą metodą jest kopiowanie całej csv do bazy wykorzystując copy_from. Ja nie zapisuje csv tylko zapisują ją w pamięci czyli tworzę stream wykorzystując stringIO. Teraz pytanie jak poradzić sobie z dużymi plikami gdzie będę miał po kilkaset tysięcy/miliony wierszy. Chciałbym aby buffor był doładowywany na bieżąco a z drugiej strony konsumowany czyli dane z bufforu będą kopiowane/wrzucane do bazy danych.
#programowanie #python #bigdata
  • 12
@Saly: @jurny: Może opiszę jeszcze raz od nowa początek. Mam mikroserwis którego za zadaniem jest wrzucenie dataframe to bazy danych. Czasami ten dataframe będzie miał 1000 rekordów a czasami 1mln. Najszybszą metodą jest copyfrom, jednak żeby użyć copyfrom muszę mieć csv. Jako że nie chce zapisywać csv na storage to stwierdziłem ze zrobię stream czyli stringIO. Także cała csv ląduje do pamięci i potem robię copyfrom do
@PiotrokeJ: ale tu jest problem, który (chyba) masz: konwertujesz cały df do .csv a tego chyba nie chcesz robić (bo dużo pamięci i można zrobić to w chunkach). Jak tego problemu nie ma to spoko
via Wykop Mobilny (Android)
  • 0
@PiotrokeJ: napisz sobie file-like object który będzie streamowal i formatowal dane. Takie coś było u nas najszybsze, z zastrzeżeniem że na wejściu nie mieliśmy df.