Bester Ansatz zur automatischen Verarbeitung von .csv --> MySQL

Bester Ansatz zur automatischen Verarbeitung von .csv --> MySQL

Leiten Sie dies bei Bedarf an die richtige Stelle weiter. Ich bin nicht sicher, wo ich die beste Antwort bekomme.

Ich muss eine Berichtsanwendung erstellen und würde dies, wenn möglich, gerne mit Ubuntu tun. Die ursprünglichen Daten stammen von einer gerätebasierten Anwendung, die regelmäßig eine durch Trennzeichen getrennte Protokolldatei per FTP an einen bestimmten Speicherort senden kann. Ich möchte einen Mechanismus entwickeln, um diese Daten zum Aktualisieren einer MySQL-Datenbank (die noch erstellt werden muss) zu verwenden, die zum Erstellen geplanter Berichte verwendet wird, die schließlich per E-Mail an verschiedene Verteilergruppen gesendet werden (entweder als PDF oder im Excel-Format). Wir verfügen über die interne Intelligenz, um die verschiedenen MySQL-Abfragen zu erstellen (und die Datenbank zu entwerfen), aber wir verfügen nicht über das Linux/Ubuntu-Know-how, um den besten Ansatz zu bestimmen. Wir machen etwas Ähnliches für eine andere Anwendung auf der Windows-Seite mit Crystal Reports, aber angesichts der Notwendigkeit, diese Anwendung zu verteilen, würden wir uns gerne nicht mit Windows-Lizenzkosten usw. herumschlagen müssen …

Ich brauche Rat zu den richtigen Werkzeugen/Vorgehensweisen, aber auch Empfehlungen, wo ich qualifizierte Mitarbeiter finden kann, die dies effektiv und ohne erhebliche Kosten erledigen können.

Antwort1

Sie können Befehle von der Befehlszeile mit der folgenden Syntax analysieren:

mysql -u {user} -p{password} {database} <{text.file}

Dadurch werden alle Zeilen von {text.file} bis {database} analysiert. Die Textdatei muss gültige MySQL-Anweisungen enthalten und das Passwort wird im Klartext angezeigt, psdaher sollten Sie es eingeben my.cnf(Sicherheit geht vor).

2 Methoden ...

  • Sie können den MySQL-Befehl verwendenlade Daten(weitere Optionen finden Sie unter Link):

    DATEN LADEN [NIEDRIGE_PRIORITÄT | GLEICHZEITIG] [LOKAL] INFILE {text2.file} IN TABELLE {table}

    innerhalb der text.file, um eine Textdatei in eine Tabelle einzufügen. Dies überschreibt wahrscheinlich vorhandene Zeilen, sodass Sie jedes Mal neue Dateien erstellen müssen. LOAD DATA ist sehr, sehr schnell. Kürzere Methode (Einzeiler aus einem Kommentar von Caesium):

    mysql -u {user} -p {pass} -e "LOAD DATA {rest of command}" {db}
    
  • Sie können viele INSERT INTO's in die Textdatei einfügen. Dies ist langsamer als LOAD DATA, könnte aber einfacher zu implementieren sein.

verwandte Informationen