marek: CSV Datein importieren

Hallo zusammen,

per linux Script möchte ich eine csv Datei in die MySQL Datenbank importiereren.

  
  
#!/bin/bash  
# Script: script1.sh  
clear  
echo "=====================================-"  
echo " GeoIp MySQL Database Easy Installer. "  
echo "======================================"  
echo ""  
stty -echo  
read -p "MySQL root password: " mysql_pass; echo  
stty echo  
  
database=mydb  
tabelle=mytab_city_location  
csvDatei=test1.csv  
sqlDatei=test1.sql  
echo "  
USE $database;  
  
DROP TABLE IF EXISTS $tabelle;  
  
CREATE TABLE $tabelle (  
 locid INT UNSIGNED NOT NULL,  
 country CHAR(4) NOT NULL,  
 region CHAR(4) NOT NULL,  
 city VARCHAR(50) NOT NULL,  
 postalCode INT NULL,  
 latitude FLOAT NULL,  
 llongitude FLOAT NULL,  
 metroCode INT NULL,  
 areaCode INT NULL  
);  
  
LOAD DATA LOCAL INFILE '$csvDatei'  
INTO TABLE $database.$tabelle  
FIELDS TERMINATED BY ','  
LINES TERMINATED BY '\n'  
(locid, country, region, city, postalCode, latitude, llongitude, metroCode, areaCode);  
" > $sqlDatei  
mysql -u root --password=$mysql_pass $database < $sqlDatei  
  
echo "Daten wurden in die $database.$tabelle geschrieben"  
echo ""  

Bis zu diesem Code geht es ganz gut aber dann, beim Import der Daten sind in drei Spalten überflüssige doppelte Anführungszeichen, die möchte ich loss werden.
Mein erster Versuch war:

  
LOAD DATA LOCAL INFILE '$csvDatei'  
INTO TABLE $database.$tabelle  
FIELDS TERMINATED BY ','  
ENCLOSED BY '"'  # wurde hinzu gefügt.  
LINES TERMINATED BY '\n'  

ohne Erfolg.
Der zweite Versuch sollt dann über die mysql Anweisung statt finden, sieht folgender Maßen aus:

  
echo ""  
mysql -u root --password=$mysql_pass ;  
UPDATE $database.$tabelle SET country=REPLACE(country, "\"", ""), region=REPLACE(country, "\"", ""), city=REPLACE(city, "\"", "");  
  
echo "Updage der Felder country, region, city"  
echo ""  
echo "ALTER TABLE $database.$tabelle MODIFY CHANGE country CHAR(2);"  
echo "ALTER TABLE $database.$tabelle MODIFY CHANGE region CHAR(2);"  

Die update Anweisung wurde nicht mehr ausgeführt :-(
Jetzt stecke ich fest, kann jemand ein Blick werfen und mir ein Tipp geben.
Danke im Vorraus.

Grüße
marek

  1. Hallo,

    mysql -u root --password=$mysql_pass ;

    Nach dieser Anweisung "hängt" ein Skript im MySQL Interpreter ... und wartet und wartet.
    Die Option -e (-e, --execute=name  Execute command and quit. (Output like with --batch).) könnte dir helfen.

    Grüße