Supportnet / Forum / Datenbanken
Daten zum Mysql-Server via Excel, Access oder Mysql
Frage
Hallo,
ich hab ein Frageformular erstellt und werde die Daten erst einmal per Email empfangen.
Diese Daten möchte ich dann je nachdem in einer *.xls, *.mdb oder *.sql Datei offline speichern, um sie später dann als *.sql auf den eigentlichen online-mysql-Server zu spielen.
Hintergrund: Ich trau mich noch nicht heran, die Daten sofort nach Formulareingabe auf dem Server zu speichern und ausserdem würde ich ja so auch gleich nen "offline Backup" haben...--> deshalb die wohl etwas umständliche Variante....
Naja, [b]welches Dateiformat/Programm würdet ihr mir denn empfehlen, um die per email gesendeten Daten offline zu speichern bzw. für die sql online vorzubereiten?[/b]
Access arbeitet ja mit Fremdschlüsseln, die durch manche SQl-Versionen noch nicht unterstützt werden, daher ist vielleicht ne einfache Exceldatei empfehlenswert oder was meint ihr?
Ich freue mich auf Eure Ideen und Tipps
Gruss Mel
Antwort 1 von bored
Zitat:
welches Dateiformat/Programm würdet ihr mir denn empfehlen, um die per email gesendeten Daten offline zu speichern bzw. für die sql online vorzubereiten?
welches Dateiformat/Programm würdet ihr mir denn empfehlen, um die per email gesendeten Daten offline zu speichern bzw. für die sql online vorzubereiten?
Wenn es, egal wo, jemals in eine Datenbank o.ä. rein soll, ggf. sogar verschiedene, dann IMMER plain-text-csv dateien.
Das sieht dann ungefähr so aus:
adressen.txt
1|Meier|Mannfred|Schlossweg 22|2|51223|Aralsberg
2|Wilhelm|Rupert|Wiesenweg 2|5|23992|BPland
3|Zaphod|Sepp|Handtuchstr. 42|8|42220|ShelldorfNatürlich können die Trennzeichen variieren. CSV steht eigentlich für Comma Seperated Values. Ich persönlich würde bei sowas NICHT das Komma wählen, weil der User ja auf den Gedanken kommen könnte, Kommata einzutragen (was du aber mit php oder unschöner mit JS überprüfen könntest). Natürlich könnte der User auch alles mögliche andere da eintragen, aber ein Komma ist IMHo das Wahrscheinlichste.
Auf jeden Fall wirst du in den Dokumentationen zu deiner Datenbank auf jeden Fall einen Punkt finden, in dem beschrieben ist, wie solche Dateien importiert werden.
Ein Weg wäre z.B. dieser hier mit einem SQ-Befehl:
load from ´/home/database/adressen.txt´ insert into tabelle delimiter ´|´;Antwort 2 von bored
Nachtrag:
Auf Windows-Systemen muss der Pfad natürlich nicht "/home/user/..." lauten, sondern "C:\..."
Auf Windows-Systemen muss der Pfad natürlich nicht "/home/user/..." lauten, sondern "C:\..."
Antwort 3 von Mel
aha,
super vielen Dank für die so ausführliche Erklärung.
Gut, dann werde ich mal alles in dem von Dir vorgeschlagenen Format abspeichern.
Das Importieren der csv klappt schon mal prima. Und noch besser wirds mit Deiner Empfehlung bzgl. Kommata klappen.
Danke Dir vielmals
LG
Mel
super vielen Dank für die so ausführliche Erklärung.
Gut, dann werde ich mal alles in dem von Dir vorgeschlagenen Format abspeichern.
Das Importieren der csv klappt schon mal prima. Und noch besser wirds mit Deiner Empfehlung bzgl. Kommata klappen.
Danke Dir vielmals
LG
Mel
Antwort 4 von Proggi
bitte beachte das formulare die solche sonderzeichen wie eben Anführungszeichen, kommas oder trennstriche enthalten dazu führen können das daten falsch importiert werden. es ist eigentlich fast immer besser direkt in die datenbank zu schreiben.
Antwort 5 von Mel
Zitat:
es ist eigentlich fast immer besser direkt in die datenbank zu schreiben.
es ist eigentlich fast immer besser direkt in die datenbank zu schreiben.
Danke für den Tipp. Ja, ich glaube, das ist angesichts des Aufwands , den ich betreiben wollte, doch etwas weniger umständlich ...
1. Daten per Email an Outlook
2. Daten von Outlook an Excel
3. Daten als *.csv abspeichern und dann von der online-sql aus importieren
Oder was meint ihr? ;-)
Gruss Mel
Antwort 6 von Nessus
Hi,
dein Vorhaben ist Sinnfrei. Lege es gleich in die DB.
Die einzelnen Vars müssen allerdings vorher auf SQL-Injection überprüft werden, was nicht sonderlich schwer ist.
Nessus
dein Vorhaben ist Sinnfrei. Lege es gleich in die DB.
Die einzelnen Vars müssen allerdings vorher auf SQL-Injection überprüft werden, was nicht sonderlich schwer ist.
Nessus
Antwort 7 von Mel
na gut, na gut,
ich werd mich dann mal langsam aber sicher, an der Übergabe von Formulareingaben an eine Datenbank versuchen....
Vielen Dank für Eure Tipps und Hinweise
Ich meld mich mit ersten Ergebnissen wieder zurück
Schönen Abend noch
Mel
ich werd mich dann mal langsam aber sicher, an der Übergabe von Formulareingaben an eine Datenbank versuchen....
Vielen Dank für Eure Tipps und Hinweise
Ich meld mich mit ersten Ergebnissen wieder zurück
Schönen Abend noch
Mel
Antwort 8 von Nessus
Hi,
hier hast du mal einen Anfang:
Der passende SQL-Code zum Anlegen der Tabelle:
HTH
Nessus
hier hast du mal einen Anfang:
<?php
$host = "localhost"; // MySQL - Zielrechner.
$user = "xxx"; // Dein Userlogin.
$password = "xxx"; // Dein Datenbankpasswort.
$database = "xxx"; // Gewünschte Datenbank
$table = "xxx"; //Tabelle
$test = "1";
mysql_connect($host,$user,$password)
or die("Abbruch: Verbindung zu ´$host´"
." konnte nicht hergestellt werden.");
mysql_select_db($database)
or die("Abbruch: Datenbank ´$database´ konnte nicht"
." selektiert werden.<br><br>MySQL sagt: ".mysql_error());
$begriff = strip_tags($begriff);
$erklaerung= strip_tags($erklaerung);
$abc = substr($begriff, 0, 1);
$abc = trim($abc);
$abc = strtoupper($abc);
$erklaerung= nl2br($erklaerung);
$query = "INSERT INTO `wissen` (`abc`,`begriff`,`erklaerung`,`test`) VALUES (´".$abc."´,´".$begriff."´, ´".$erklaerung."´, ´".$test."´)";
mysql_query($query);
?>Der passende SQL-Code zum Anlegen der Tabelle:
CREATE TABLE `wissen` (
`abc` enum(´A´,´B´,´C´,´D´,´E´,´F´,´G´,´H´,´I´,´J´,´K´,´L´,´M´,´N´,´O´,´P´,´Q´,´R´,´S´,´T´,´U´,´V´,´W´,´X´,´Y´,´Z´) NOT NULL default ´A´,
`begriff` varchar(100) NOT NULL default ´´,
`erklaerung` text NOT NULL,
`test` enum(´0´,´1´) NOT NULL default ´0´,
UNIQUE KEY `begriff` (`begriff`)
) TYPE=MyISAM;HTH
Nessus
Antwort 9 von Mel
@ Nessus:
vielen Dank für den Code.
Den muss ich mir jetzt erst einmal gaaaaaaaaaaaaaaaaanz in Ruhe anschauen, um zu verstehen ....
Super gute Nachtlektüre ;-)
Bis morgen
Gruss Mel
vielen Dank für den Code.
Den muss ich mir jetzt erst einmal gaaaaaaaaaaaaaaaaanz in Ruhe anschauen, um zu verstehen ....
Super gute Nachtlektüre ;-)
Bis morgen
Gruss Mel
Antwort 10 von Mel
Ich hab da noch grad nen Zweifel an der "direkt-in-die-datenbank-eintrag-methode":
Wie kontrollier/überwach ich denn am besten, daß niemand "Quatsch" in die Datenbank einträgt?
Natürlich mit Plausibilitätsprüfungen usw., aber wenn nun jemand irgendeinen Text, der keinen Sinn ergibt eingibt....
Laß ich mir jedesmal ne email generieren, die mir sagt, neuer Eintrag vorhanden, so daß ich ihn prüfen kann oder gibt es da elegantere Methoden?
Vielleicht gibt es ja z.B. eine Methode, daß ich auf irgendeine Weise zuerst den Beitrag bestätigen muss, damit er von der Datenbank aufgenommen wird...
Ich bin absolut offen für jede Art und Weise der Lösungen und vorgehensweisen
vielen Dank schon einmal vorab
Gruss Mel
Wie kontrollier/überwach ich denn am besten, daß niemand "Quatsch" in die Datenbank einträgt?
Natürlich mit Plausibilitätsprüfungen usw., aber wenn nun jemand irgendeinen Text, der keinen Sinn ergibt eingibt....
Laß ich mir jedesmal ne email generieren, die mir sagt, neuer Eintrag vorhanden, so daß ich ihn prüfen kann oder gibt es da elegantere Methoden?
Vielleicht gibt es ja z.B. eine Methode, daß ich auf irgendeine Weise zuerst den Beitrag bestätigen muss, damit er von der Datenbank aufgenommen wird...
Ich bin absolut offen für jede Art und Weise der Lösungen und vorgehensweisen
vielen Dank schon einmal vorab
Gruss Mel
Antwort 11 von Nessus
Hi,
wenn du dir den oberen Code anschaust, habe ich ein "test"-Feld. Das ist vom Typ enum und kennt nur 1 oder 0.
Wenn jetzt jemand etwas einträgt, bekommt dieser Eintrag immer die Testkennung "1".
Wenn ich die Daten auf der anderen Seite ausgebe, frage ich alle Daten ab, die nicht die Testkennung 1 haben.
Und da ich zu faul bin, immer auf der Datenbank rumzurutschen, habe ich ein Adminmenü, wo mir dann wiederum nur die Test "1" angezeigt werden, wo ich die entweder Manipulieren, Freigeben, oder löschen kann,
Zumal mir bei jedem Eintrag eine kurze Mail zugensendet wird, damit ich nicht am Tag mehrfach draufschauen muß.
Ist recht einfach und eigentlich auch nur eine Fleißfrage.
Das Abfragescript habe ich schon gepostet in einem Thread von dir:https://supportnet.de/threads/1369522
HTH
NEssus
wenn du dir den oberen Code anschaust, habe ich ein "test"-Feld. Das ist vom Typ enum und kennt nur 1 oder 0.
Wenn jetzt jemand etwas einträgt, bekommt dieser Eintrag immer die Testkennung "1".
Wenn ich die Daten auf der anderen Seite ausgebe, frage ich alle Daten ab, die nicht die Testkennung 1 haben.
Und da ich zu faul bin, immer auf der Datenbank rumzurutschen, habe ich ein Adminmenü, wo mir dann wiederum nur die Test "1" angezeigt werden, wo ich die entweder Manipulieren, Freigeben, oder löschen kann,
Zumal mir bei jedem Eintrag eine kurze Mail zugensendet wird, damit ich nicht am Tag mehrfach draufschauen muß.
Ist recht einfach und eigentlich auch nur eine Fleißfrage.
Das Abfragescript habe ich schon gepostet in einem Thread von dir:https://supportnet.de/threads/1369522
HTH
NEssus
Antwort 12 von Mel
@nessus:
Wie genial ist denn die Lösung bitte !
Supergenial.
Da würde ich auch gern hinkommen. Mal schaun, was ich da so auf die Reihe bekomm.
auf jeden Fall super vieiieieilen Dank für die Anregung/Lösungsvorschlag
Das half jetzt echt meine Bedenken bzgl. "Quatsch in der Datenbank" zu beseitigen
ciao Mel
Wie genial ist denn die Lösung bitte !
Supergenial.
Da würde ich auch gern hinkommen. Mal schaun, was ich da so auf die Reihe bekomm.
auf jeden Fall super vieiieieilen Dank für die Anregung/Lösungsvorschlag
Das half jetzt echt meine Bedenken bzgl. "Quatsch in der Datenbank" zu beseitigen
ciao Mel

