HfWU - Datenexport und -import mit awk

Aus Wikizone
Wechseln zu: Navigation, Suche

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:

  1. Datenbankstruktur prinzipiell aufbauen.
  2. Generierung von SQL - Abfragen auf die Infosite Datenbank um die Daten zu bekommen
  3. 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
  4. Erstellen der Tabelle (evt. von Hand manipulieren)
  5. awk-Skript zum Auslesen aller uids und generieren eines insert-uid.sql Files
  6. Erstellen der Datensätze (nur die uids, alle anderen Felder sind leer)
  7. awk-Skript zum Updaten der Datensätze mit den restlichen Daten (dazu die uids für den where Clause nutzen) -> update.sql
  8. 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