Newsgroup: it.comp.software.database
Titolo: Re: Importare dati da MySQL a PostGre

 tutto il lavoro, solo che volevo evitare.
Ciao Davide,
nella cartella contrib dei sorgenti di postgresql ci dovrebbero essere 
due script in perl che fanno al caso tuo. Prova a darci una occhiata.
Facci sapere.
M.
-- 
Borland C++ Builder Mailing List:
http://tux.linuxtime.it/mailman/listinfo/bcb-it

         \0^F\0\0\0\0\0\0\0\0\0\0\0^A\0\0\0#\0\0\0\0\0\0\0\0^P\0\0%\0\0\0^A\0\0\0
ARGH! Ma č un campo binario... potevi dirlo subito :-)
La colonna in cui va a finire di che tipo č stata definita? Dovrebbe 
essere di tipo bytea, ma ancora non basta: in standard postgresql nei 
dati binari i caratteri non stampabili vanno escapati con una *doppia* 
backslash e seguiti dal codice ottale a tre cifre del carattere (no, non 
chiedermi cosa si fossero fumati quando l'hanno deciso :-().
See here per il formato corretto:
http://www.postgresql.org/docs/7.4/interactive/datatype-binary.html
-- 
Fabrizio "Hermooz" Ermini

 il giochetto... altre idee?
Beh, considerando che sia l'uno che l'altro volendo si possono 
installare in trenta secondi, non č che sia un'idea cosě da disprezzare...
-- 
Fabrizio "Hermooz" Ermini

 tutto il lavoro, solo che volevo evitare.
Beh, si tratterebbe solo di scrivere un filettino .sql contenente una 
fila di
copy nometabella from nomefile
per ogni tabella e lanciarlo con psql -i.
pero' se anche nei csv mysql ci infila gli stessi escape sei dove prima :-(
-- 
Fabrizio "Hermooz" Ermini

 altre idee?
e fare un unload ?
nel senso di scaricare i dati come flat file , e pero' non so' cosa offra
pg per fare l'upload ?
insomma qualcosa che in oracle sarebbe il ctl del sql*loader ?
scarichi la/le tabelle delimitando i campi,
e poi usi il dellimitatore per fare l'upload !
quella di seguiito e' una cosa vecchia e non testata, ma rende l'idea :)
felice_pago
spool &1..ctl
SELECT
          'OPTIONS(ERRORS=20000)'||chr(10)
        ||'LOAD DATA'||chr(10)
        ||'INFILE '''||lower(table_name)||'.dat'' '||chr(10)
        ||'TRUNCATE'||chr(10)
        ||'INTO TABLE '||table_name||chr(10)
        ||'FIELDS TERMINATED BY '','' '||' OPTIONALLY ENCLOSED BY ''"'' '||chr(10)
        ||'('
FROM user_tables
WHERE TABLE_NAME = UPPER('&&1');
SELECT
decode(rownum, 1, ' ', ', ')||
   rpad(column_name,20,' ')||
        decode(data_type,
           'VARCHAR2', 'CHAR "trim(:'|| column_name ||')"',
           'NUMBER', decode(data_scale,
                           0, 'INTEGER EXTERNAL',
                              'DECIMAL EXTERNAL'
                        ),
           'DATE', 'DATE "DD-MON-YYYY" trim:('|| column_name ||')"',
           'FLOAT', 'DECIMAL EXTERNAL trim(:'|| column_name ||')"',
            NULL
        )
FROM user_tab_columns
WHERE TABLE_NAME = UPPER('&&1')
ORDER BY COLUMN_ID;
SELECT ')' FROM dual;
spool off
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 il giochetto... altre idee?
Procurarsi i driver JDBC per entrambi i database e scrivere
un programmino con due righe di java che fa un leggi-scrivi.
Saluti 

 un programmino con due righe di java che fa un leggi-scrivi.
te dici bene, ma davide non vuole scrivere una riga :)
cmq quell'accrochio proposto, l'ho visto
utilizzare per trasferire 120 milioni di righe ,
da oracle a db2 !
non ricordo quante ore di elaborazione !
felice_pago


 an axe embedded in it...  --Tanuki
Thanks!
m.strow...@duskmail.com