postgresql + python: come adattarsi per copy_from?

database postgresql python sql sqlbulkcopy

Domanda

Quale funzione è possibile utilizzare per adattare i valori per l'uso appropriato in una istruzione COPY FROM ? Ho provato questa funzione di adapt :

from psycopg2.extensions import adapt

Tuttavia, dà la cosa sbagliata per i datetimes ( ::timestsamp alla stringa, postgres non gli piace) e string (li ::timestsamp tra virgolette singole, ad es. La stringa vuota è '', dove sembra che non debbano essere usate virgolette) .

Risposta accettata

Non dovresti semplicemente adapt con copy_from .

copy_from aspetta un formato diverso da quello di SQL.

Per le stringhe, suggerirei di scrivere la propria funzione copy_adapt , che dovrebbe uscire dalle schede con \t , CR con \r e LF con \n .

I valori per le colonne timestamp / date devono essere formattati (con strftime?) Come la stringa che vedi quando selezioni SELECT now() in Postgres.

Gli elementi di tupla dovrebbero essere sapientemente suddivisi in schede e l'intera tupla è finita con una nuova riga.



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché