Re: [postgresql-it] Migliore pratica per gestione comando Copy

  • From: Daniele Varrazzo <piro@xxxxxxxxxxx>
  • To: <postgresql-it@xxxxxxxxxxxxx>
  • Date: Mon, 17 Dec 2012 11:10:05 +0100

On 2012-12-16 18:17, acheriom@xxxxxxxxx wrote:

Ciao a tutto il NG,



Vorrei un consiglio circa la migliore pratica da adottare per
risolvere un mio
problema.

Ho un'applicazione Windows che attinge i dati da un DB PostgreSQLremoto ; i
dati in questo DB provengono originariamente da files csv che poi
devono essere
riversati nel DB tramite comando COPY.

Per ridurre al massimo i tempi di caricamento dati la mia idea era di
mettere
un piccolo software sul server Windows di provenienza che:
1) trasferisca i files csv, compattati, dal server di provenienza a quello
dove risiede il DB PostgreSQL via FTP
2) scompatti i files
3) riversi i dati dei files scompattati nel DB tramite il comando COPY.
4) cancelli i files csv

Volevo sapere se questo sistema e' valido, tenendo presente che vorrei
minimizzare al massimo problemi che si possono verificare (mi vengono
in mente
errori durante il trasferimento del file ad esempio). Se si, vorrei anche
sapere quali sono le techniche per per scompattare i file compressi e
come fare
a lanciare il comando COPY dalla postazione remota.


Grazie 1000


Ciao,

No, quello che proponi non è assolutamente un modo pratico o robusto di caricare i dati sul server. Viola l'interfaccia principale che rende client e server indipendenti, ha problemi di permessi, più parti mobili del necessario e la capacità di scripting di windows è troglodita.

Collegati dal client che ha il file e usa copy from stdin invece di copy from nomefile, passando i dati da client a server direttamente dal client senza copiare alcun file. Se il file è già in un formato leggibile da postgres ti basta qualcosa come "psql -c 'copy from stdin into table' < nomefile" senza nessun programma aggiuntivo (...grossomodo: sono sul cell, non posso controllare la sintassi)

--
Daniele Varrazzo - Develer S.r.l.
http://www.develer.com

Other related posts: