marcel1989
Goto Top

MySQL Datenbank Import Aufgabe für mehrere .csv dateien

Hi,
ich komm nicht weiter.
Ich hab auf einem Windows Server 2012 r2 eine MariaDB/MySQL laufen.
Nun soll diese MariaDB mit Daten gefüllt werden. Dies soll nicht manuell gemacht werden sondern automatisiert.
Die Dateien die in die Datenbank sollen sind .csv dateien und damit recht zugänglich. nun hab ich allerdings schon viel Probiert und bisher noch keine Lösung gefunden.

Wie könnte ich die Daten "Automatisiert" in die MariaDB/MySQL bringen?

Zu meiner Ausstattung: bisher keine weiteren GUI´s außer HeidiSQL. Ich kann einfach nichts finden was eine Aufgabenplanung mitbringt.

Ich hab schonmal gelesen das man mit einer CMD und dem Befehl "Load Data into" Daten einfügen könnte. Das hat aber bisher nicht bei mir geklappt.

Über jede Hilfe bin ich dankbar!

Ich danke euch im Voraus.

Grüße
Marcel

Edit:
<connection host="test" port="test" login="test" password="pass" database="test" client_encoding="utf8">
</connection>
<items>
<item target="misch_rohdaten" file_name="C:\Mischereidaten\*.csv" delimiter="59" quote_char="&quot;" encoding="0" column_headers="true" xml_data_location="0" empty_target="false">
<data_formats date="" time="" datetime="" decimal_separator="," thousand_separator="" boolean_true="True" boolean_false="False" null_values=";NULL"/>
<columns>
<column name="VarName" map="1"/>
<column name="TimeString" map="2"/>
<column name="VarValue" map="3"/>
<column name="Validity" map="4"/>
<column name="Time_ms" map="5"/>
</columns>
</item>
</items>

An sowas hab ich gedacht. ich weiß nur nicht wie ich es umsetzen soll.

Content-ID: 383452

Url: https://administrator.de/contentid/383452

Ausgedruckt am: 26.11.2024 um 03:11 Uhr

SeaStorm
SeaStorm 15.08.2018 um 16:17:54 Uhr
Goto Top
Hi

Dies soll nicht manuell gemacht werden sondern automatisiert.
Das willst du einmalig machen oder automatisch z.B täglich?

was ist denn in der CSV? Tatsächlich ne CSV, also (Strich)Komma getrennte Werte? Mit oder Ohne Spaltenüberschriften?

Wurden die Tabellen in der DB schon korrekt erstellt?
Wenn das gemacht wurde, kannst du load data infile verwenden
https://mariadb.com/kb/en/library/load-data-infile/


Ich hab schonmal gelesen das man mit einer CMD und dem Befehl "Load Data into"
Ne das ist ein SQL Befehl...

Und diesen kannst du etwa so gestalten, wie du hier sicherlich auch schon selbst gefunden hast.

LOAD DATA LOCAL INFILE 'uniq.csv'  
INTO TABLE tblUniq
FIELDS TERMINATED BY ','  
    ENCLOSED BY '"'  
LINES TERMINATED BY '\n'  
IGNORE 1 LINES
(uniqName, uniqCity, uniqComments)

muss natürlich an deine Gegebenheiten anpassen.
Pjordorf
Pjordorf 15.08.2018 aktualisiert um 16:18:28 Uhr
Goto Top
Hallo,

Zitat von @Marcel1989:
Ich hab auf einem Windows Server 2012 r2 eine MariaDB/MySQL laufen.
OK

Die Dateien die in die Datenbank sollen sind .csv dateien und damit recht zugänglich. nun hab ich allerdings schon viel Probiert und bisher noch keine Lösung gefunden.
https://mariadb.com/kb/en/library/loading-csv-files/
https://mariadb.com/kb/en/library/importing-data-into-mariadb/
https://mariadb.com/kb/en/library/load-data-infile/
https://dev.mysql.com/doc/refman/8.0/en/loading-tables.html
https://gist.github.com/shalaby/deb7edca438c86b45afd

Zu meiner Ausstattung: bisher keine weiteren GUI´s außer HeidiSQL. Ich kann einfach nichts finden was eine Aufgabenplanung mitbringt.
Reicht da nicht der Taskplaner von dein Server 2012R2?

Das hat aber bisher nicht bei mir geklappt.
Das ist keine Hilfe mit der wir etwas anfangen können, und dein Server hat es dir so auch nicht gesagt...

Gruß,
Peter
Marcel1989
Marcel1989 15.08.2018 aktualisiert um 16:29:05 Uhr
Goto Top
Hi SeaStorm,
Ja es soll tatsächlich mehrmals täglich laufen.
Die CSV ist eine CSV mit Semikolon getrennten werten und mit Spaltenüberschrift.
Die Tabelle wurde bereits richtig erstellt.

ich hab das schonmal mit load Data versucht. Das Problem ist ja hier wieder das Load Data Local Infile nur dann geht wenn ich es per SQL ausführe. Demzufolge kann ich es auch nicht Per Task anbinden.

Ich Probier aber noch mehr aus.

Grüße
Marcel
Marcel1989
Marcel1989 15.08.2018 um 16:28:33 Uhr
Goto Top
Hi Pjordorf,

Also nur damit wir uns richtig verstehen: Ich soll also eine SQL abfrage mit

mysql -uroot -p --local-infile

LOAD DATA LOCAL INFILE "file.csv"
INTO TABLE db.table
FIELDS TERMINATED BY ','
ENCLOSED BY '\"'
LINES TERMINATED BY '\n'

in meinen Taskplaner von Windows einfügen?
Wie soll denn das gehen? Ich hab bereits die SQL abfragen Probiert. Die gehen auch wundervoll. Problem ist aber das ich sie nicht per Taskplaner ausführen kann.

Weil ich vielleicht auch nicht verstehe wie das aus dem Taskplaner heraus gehen soll. Hast du da einen Tip für mich?

Ich danke im Voraus.

Grüße Marcel
SeaStorm
Lösung SeaStorm 15.08.2018 um 16:28:37 Uhr
Goto Top
wenn der mysql cli client installiert wurde, kannst du im cmd einfach die mysql.exe ausführen.
Also den Befehl einmal zusammenbasteln wie du ihn brauchst und in eine .sql datei legen.
Dann per taskplaner den befehl
mysql < c:\tmp\import.sql
ausführen.
Marcel1989
Marcel1989 15.08.2018 um 16:30:49 Uhr
Goto Top
SeaStorm, ok. Wurde nicht mit cli client installiert. sondern mit dem Setup von der MariaDB. wo bekomm ich den den mysql cli her?

dann wäre das ja eine absolut einfache Lösung.
SeaStorm
Lösung SeaStorm 15.08.2018 um 16:31:55 Uhr
Goto Top
führst du den Import auf dem Server aus? Da haste die CLI wahrscheinlich mitinstalliert. einfach mal in die CMD gehen und "mysql" eingeben face-smile
Marcel1989
Marcel1989 15.08.2018 um 16:34:24 Uhr
Goto Top
Hab ich schon Probiert mit CDM.
Aufgrund dessen hab ich gesagt ist wahrscheinlich ohne CLI installiert. :D
mysql
Marcel1989
Marcel1989 15.08.2018 um 16:38:13 Uhr
Goto Top
Ich hab da bisschen was gefunden:
mysql
SlainteMhath
SlainteMhath 15.08.2018 um 16:39:45 Uhr
Goto Top
Moin,

kann natürlich sein, das der cli client nicht im pfad liegt... also wird mal einen Blick ins mariadb Programm verzeichniss.

oder, du zeihst dir von der website https://dev.mysql.com/downloads/mysql/ das ZIP Archiv deiner Release und nimmst dir da die mysql.exe und arbeitest mit der.

lg,
Slainte
Marcel1989
Marcel1989 15.08.2018 um 16:42:29 Uhr
Goto Top
Ja soweit ganz gut... Problem ist nur laut cmd darf ich nicht drauf zugreifen. Ist das Normal und ich soll erstmal weiter machen und per SQL die Daten einfügen?

Gruß
Marcel

Danke echt für die hilfe.
SlainteMhath
SlainteMhath 15.08.2018 um 16:45:19 Uhr
Goto Top
... Problem ist nur laut cmd darf ich nicht drauf zugreifen. ...
Was meinst du damit?
SeaStorm
SeaStorm 15.08.2018 aktualisiert um 16:46:33 Uhr
Goto Top
jupp, ist nicht im PATH registriert. Kannst du machen, musst du aber nicht. Kannst im Taskplaner ja den vollen Pfad angeben.
Damit er den korrekten User + Passwort nimmt, kannste das entweder auch als Parameter mitgeben, oder die my.cnf erstellen:
https://mariadb.com/kb/en/library/configuring-mariadb-with-mycnf/
Marcel1989
Marcel1989 15.08.2018 um 16:48:26 Uhr
Goto Top
@SeaStorm
Kannst du mir noch fix die 2 Varianten mit den User + Passwort Parameter erklären? Dann kann ich morgen mal voll loslegen und endlich alle daten einfügen.

Ihr seit echt die besten. Danke!

Gruß
Marcel
SlainteMhath
SlainteMhath 15.08.2018 um 16:52:20 Uhr
Goto Top
Kannst du mir noch fix die 2 Varianten mit den User + Passwort Parameter erklären?

echo password | mysql -u<user> -p  .... 

oder eine my.cnf erstellen

und noch ein Pro-Tipp: Mach das nicht mit dem (Domain-)Admin :D
SeaStorm
Lösung SeaStorm 15.08.2018 aktualisiert um 16:57:24 Uhr
Goto Top
o_O
echt jetzt ?

mysql.exe -uUSER -pDEINPASSWORT DBNAME < import.sql

oder besser my.cnf in c:\windows anlegen mit inhalt
[client]
user=USER
password=PASSWORT
Marcel1989
Marcel1989 15.08.2018 um 17:02:58 Uhr
Goto Top
Hi SlainteMhath,
Jedesmal wenn ich, trotz my.cnf im Ordner, mysql.exe ausführen möchte kommt Error 1045 (28000): Access denied fpr user 'administrator'@'localhost' (using password: NO)

ich hab jetzt wie in dem geposteten Link beschrieben in die Datei geschrieben

[client]
user=root
password=password
Pjordorf
Pjordorf 15.08.2018 um 21:47:49 Uhr
Goto Top
Hallo,

Zitat von @Marcel1989:
Jedesmal wenn ich, trotz my.cnf im Ordner, mysql.exe ausführen möchte kommt Error 1045 (28000): Access denied fpr user 'administrator'@'localhost' (using password: NO)
Was hast du denn deiner MariaDB gesagt wer dort was und mit welchem Paswwort machen darf? Codepage passt (default-character-set)?
https://forums.mysql.com/read.php?11,34014,46593
https://serverfault.com/questions/424871/mysql-error-1045-28000

Gruß,
Peter
Marcel1989
Marcel1989 16.08.2018 um 08:12:22 Uhr
Goto Top
Danke euch alle für die Hilfe!

Ich hab den Wald vor lauter Bäumen nicht gesehen und bin absolut froh so hilfsbereite menschen zun haben!

Gruß
Marcel