Text(Fixed Length) in MySql importieren

J

JCB

Mitglied
Aufgewärmt: Text(Fixed Length) in MySql importieren

Moin,
ich hoffe, das ist die richtige abteilung. Ich möchte eine Textdatei mit fester Feldlänge mittels AWK in eine MySQL Datenbank importieren. Dazu habe ich folgende Zeile geschrieben:
Code:
awk 'BEGIN{FIELDWIDTHS="10 9 90 64 64 30 30 9 2 16 5 16 200 1"};{print "INPUT INTO Master_DB (UID,C_D,C_Name1,C_Name2,C_Address1,C_Address2,C_City) VALUES(\""$1"\",\""$2"\",\""\$3"\",\""\$4"\",\""\$5"\",\""\$6"\",\""\$7"\")"}' input.txt | mysql -u jcb --password=geheim dbname

leider bekomme ich jedesmal die Fehlermeldung, daß Backslash nicht das letzte Zeichen auf der Zeile ist? Wo soll da noch ein Backslash rein??

Kennt sich da jemand aus??

Danke,

JCB
 
Zuletzt bearbeitet:
das sql statement muss aber wohl insert into statt input into heissen.
und wie lautet die fehlermeldung genau? kommt die von der shell oder von mysql?
 
@ninguno

Ok du hast Recht. Hab ich jetzt geändert. jedoch ist die Meldung gleich. Ich denke daß es dann ein awk Fehler ist:
Code:
awk: BEGIN{FIELDWIDTHS="10 9 90 64 64 30 30 9 2 16 5 16 200 1"};{print "INSERT INTO Master_DB (UID,C_D,C_Name1,C_Name2,C_Address1,C_Address2,C_City) VALUES(\""$1"\",\""$2"\",\""\$3"\",\""\$4"\",\""\$5"\",\""\$6"\",\""\$7"\")"}
awk:                                                                                                                                                                                ^ Backslash ist nicht letztes Zeichen auf der Zeile.

Der MySql Teil wird bei dieser Fehlermeldung noch nicht behandelt.

Irgendeine Idee?

Danke,

JCB
 
falsch:
Code:
awk 'BEGIN{FIELDWIDTHS="10 9 90 64 64 30 30 9 2 16 5 16 200 1"};{print "INPUT INTO Master_DB (UID,C_D,C_Name1,C_Name2,C_Address1,C_Address2,C_City) VALUES(\""$1"\",\""$2"\",\""\$3"\",\""\$4"\",\""\$5"\",\""\$6"\",\""\$7"\")"}' input.txt | mysql -u jcb --password=geheim dbname

richtig:
Code:
 awk 'BEGIN{FIELDWIDTHS="10 9 90 64 64 30 30 9 2 16 5 16 200 1"};{print "INSERT INTO Master_DB (UID,C_D,C_Name1,C_Name2,C_Address1,C_Address2,C_City) VALUES(\""$1"\",\""$2"\",\""$3"\",\""$4"\",\""$5"\",\""$6"\",\""$7"\")"}' input.txt | mysql -u jcb --password=geheim dbname

Der Unterschied:
Du hast bei Deinem awk ab $3 bis $7 plötzlich angefangen Backslashes vor das $-Zeichen zu schreiben...warum auch immer :D - lass sie weg und es sollte funktionuckeln... :D :D :D
 
@Schlaubi

*verneig* Weiss auch nicht was mich da geritten hat:think:

Ich versuch das mal,

Danke für den Tipp

JCB

[edit]
das wars, danke für eure Hilfe

[/edit]
 
Zuletzt bearbeitet:
Hallo,

da dieser Befehl nur in der bash ausgeschrieben funktioniert (das aber sauber) benötige ich einen kurzen Tip, wie ich ihn in ein Script integrieren kann. Leider gibt die Suche nicht so viel über Quotations her.

Ein Versuch war e sin Backticks zu setzen
Code:
for file in ${folder[*]}; do

#Importieren
imp= `awk 'BEGIN{FIELDWIDTHS="10 9 90 64 64 30 30 9 2 16 5 16 200 1"};
{print "INSERT INTO TEMP_MST (UID, C_DUNS, C_Name1, C_Address1, C_Address2, C_City, C_State, C_Postcode, C_Country,C_Phone,C_NationalRegisterType, C_NationalRegisterNumber, C_Comment,C_Type) 
VALUES(\""$1"\",\""$2"\",\""$3"\",\""$4"\",\""$5"\",\""$6"\",\""$7"\",\""$8"\",\""$9"\",\""$10"\",\""$11"\",\""$12"\",\""$13"\",\""$14"\");"}' 
$file`

echo $imp | mysql  -u root --password=geheim datenbank

leider bringt mir das nur ein
Code:
/usr/local/bin/readincmd.sh: line 19: INSERT: command not found

Habt ihr da eine Idee?

Vielen Dank für einen Tipp,

JCB

PS: die Zeilenumbrüche sind nur der lesbarkeit halber drin :)
 
Hallo,

die Zeilenumrüche bei der Zuweisung sind keine so gute Idee. awk beschwert sich da über einen unvollendeten String.
Außerdem würde ich bei der Variablenzuweisung das Leerzeichen nach dem = weglassen:

Falsch: imp= `irgendwas...`
Richtig: imp=`irgendwas...`

Gruß
 
Moin,

ich stimme phrenicus zu...Du kannst ja mal das | mysql ... weglassen und nur einen echo des
mit-awk-zusammengestupfelten-INSERT-Befehls machen,
dann siehst Du, was du dem mysql vorschmeißt :D
 

Ähnliche Themen

dovecot und postfix Konfiguration Problem

NagiosGrapher 1.7.1 funktioniert nicht

Festplatte stirbt, dd funktioniert nicht

Modulfehler?

Text ersetzen - (schon wieder - ich weiß)

Zurück
Oben