HfWU - Datenexport und -import mit awk
Aus Wikizone
Version vom 30. Mai 2007, 09:32 Uhr von 193.196.133.70 (Diskussion)
Todos Zeilenumbrüche mit reg. Ausdruck rausschmeißen
Problemstellung: Export von Datenstrukturen aus Infosite (z.B. Personallisten) und -import bzw. Konvertierung in vorgegebene Datenstruktur.
Allgemeines Vorgehen:
- Datenbankstruktur prinzipiell aufbauen.
- Generierung von SQL - Abfragen auf die Infosite Datenbank um die Daten zu bekommen
- awk-Skript zum Auslesen der vorhanden Felder (die Felder liegen nicht als DB-Felder vor sondern sind als Daten in der Tabelle aufgeführt) und Generierung eines sql - Files mit den Notwendigen Statements zum erzeugen der DB-Felder
- Erstellen der Tabelle (evt. von Hand manipulieren)
- awk-Skript zum Auslesen aller uids und generieren eines insert-uid.sql Files
- Erstellen der Datensätze (nur die uids, alle anderen Felder sind leer)
- awk-Skript zum Updaten der Datensätze mit den restlichen Daten (dazu die uids für den where Clause nutzen) -> update.sql
- Ausführen dieses Datensatzes
--- Mitschrieb:
awk -F "#" '{print $2}' results.csv | sort | uniq | grep "SP" | awk '{print $1,"VARCHAR(255)",",\\"}' > insert.sql
-F gibt den Feldtrenner # an, Spalte2 aus results.csv ausgeben | sortieren | doppelte raus | nur die mit SP (Felder)
dann noch manuell create table addr_temp ( und am ende ) eingefügt
alter table addr_temp uid varchar(255);
sort -n -t# +3 results1.csv
rpl "sp_auto_" "" results1.csv
awk -F "#" '{print "insert into addr_tmp uid values "$4}' results1.csv | sort | uniq
awk -F "#" {'print "update addr_temp SET "$2 "=\""$3"\"" " where uid=\""$4 "\" ;"}' results1.csv > update_values.sql