2016-04-19 8 views
2

Gibt es eine Möglichkeit, eine .csv automatisch in eine SQL-Tabelle in mysql db importiert? Ich weiß, wie man es manuell macht, aber es gibt eine Situation, in der ein .csv nächtlich von PeopleSoft exportiert wird und wir wollen, dass es automatisch in die SQL-Tabelle in einer Linux-Umgebung importiert wird. Bitte gib mir ein Beispielskript, um das zu tun .. Wenn es einen Weg gibt, kann mir jemand in diese Richtung zeigen (ich bin kein SQL Experte) !!automatisieren CSV-Import in mysql db in Linux-Umgebung

Antwort

0

Sie können versuchen, gespeicherte Prozedur erstellen, Schreiben Sie CSV-Abfrage in SP. Ereignis zum Aufruf von SP erstellen. Ich hoffe, das hilft.

CREATE EVENT IF NOT EXISTS `load_csv_event` 
    ON SCHEDULE EVERY 23 DAY_HOUR 
    DO CALL my_sp_load_csv(); 

Alos, Sie können ein Ereignis direkt erstellen und eine Ladeabfrage in es schreiben.

+0

danke für die Antwort ... aber wir können nicht die Abfrage laden in mysql sp .. können Sie mir sagen, jede Alternative zu do it..y Dump-Code, wenn Sie .. – yuvaraj

+0

hi priyanshu..how direkt erstellen ein Ereignis und schreiben Sie eine Abfrage laden ... plse sagen, eine Möglichkeit, das zu tun .. – yuvaraj

+0

Führen Sie einen Windows-Task-Scheduler. Erstellen Sie .bat-Datei mit Abfrage laden und mit Scheduler Ich habe es nicht getan, aber sollte funktionieren. Kein Schaden beim Ausprobieren neuer Sachen. – Priyanshu

0

Sie könnten einen crontab Job, zum Beispiel erstellen:

* * * * * /path/to/load_script.sh 

Wo load_script.sh wie sein kann (nicht vergessen, es ausführbar machen):

#!/bin/bash 
IMPORTED_FILE_PATH=/path/to/your/imported/file.csv 
TABLENAME=target_table_name 
DATABASE=db_name 
TMP_FILENAME=/tmp/${TABLENAME}.cvs 
# do nothing if imported file does not exist 
[ -f "$IMPORTED_FILE_PATH" ] || exit 0 
# if temporary file exists, then it means previous import job is running. Also do nothing 
[ -f "$TMP_FILENAME" ] && exit 0 
# Move it to tmp and rename to target table name 
mv "$IMPORTED_FILE_PATH" "$TMP_FILENAME" 
mysqlimport --user=mysqlusername --password=mysqlpassword --host=mysqlhost --local $DATABASE $TMP_FILENAME 
rm -f "$TMP_FILENAME" 

Es ist nur ein Beispiel (nicht getestet). Sie sollten hinzufügen, Fehlerbehandlung, Protokollierung, etc. Schauen Sie auch auf Handbuch von

+0

danke u aleksandr ... ich vl versuche und pls lass mich wissen, wenn ich Fragen dazwischen habe .. – yuvaraj