ho delle righe di un file fatte come nell'allegato. Vorrei arrivare a costruire una insert valida per il db. Sono arrivato fino ad un certo punto:
1) sostituisco il separatore di colonna "|$|" con "," e le date non valide con "".
Codice: Seleziona tutto
sed 's/|\$|/\,/g;s/01\/01\/0001\ 00:00:00//g;s/01\/01\/0001//g' esempio.txt
Codice: Seleziona tutto
| awk '{print "("$0"),"}'
Codice: Seleziona tutto
| cut -d , -f10,30 --complement
Codice: Seleziona tutto
| sed '1iINSERT INTO table VALUES (col1, col2, ...., coln)' >> esempio.sql
5) elimino gli spazi inutili
Codice: Seleziona tutto
awk 'BEGIN{ FS=" *,"; OFS=","} {$1=$1; print $0}' esempio.sql > esempio2.sql
ho provato con questo
Codice: Seleziona tutto
sed 's/\b\(0*\)//g' >> esempio2.sql
vengono preservati i segni (ci sono delle stringhe -00000001 che diventano -1) ma le stringe con tutti 0 vengono rimosse. Io vorrei lasciare lo 0 finale. Qualcuno sa come fare?
Inoltre vorrei mettere il carattere ' ad inizio ed alla fine di alcune colonne scelte da me ad esempio la 1 la 22 ecc qualcuno saprebbe come fare anche questo?
Se inoltre avete una soluzione puù elegante è ben accetta.
ps: Sto facendo questa cosa perchè il comando di import ci ha impiegato 11 ore e volevo vedere se con una insert secca risparmiamo un pò di tempo.
Grazie mille