Sponsor-Board.de
Antwort schreiben  Thema schreiben 
 Seiten (2): « Erste 1 2 Nächste > Letzte »

JSON zu SQL

Verfasser Nachricht

Beiträge: 433
Bewertung: 6
Registriert seit: Mar 2011
Status: offline


Beitrag: #1
JSON zu SQL

Guten Tag liebe Community,

Heute stoße ich mal wieder auf ein Problem, das sicher nicht so einfach zu lösen ist, da ich leider zu wenig Informationen zu dem Thema finde.

Es geht um Folgendes.

Ich habe eine .json Datei, in die immer wieder ein Wert geschrieben wird. Dieser Inhalt sieht wie folgt aus.

Code:
[{"raspid":"1","DateTime":"08-14-01","Temperatur":"27.0°C","Status":"Normal"},
{"raspid":"1","DateTime":"08-15-01","Temperatur":"27.0°C","Status":"Normal"}]


Nun hänge ich bei folgendem Problem. Wie convertiere ich die .json Datei in SQL Code? oder Wie decodiere ich die .json Datei so, dass sie auf den SQL Server convertiert werden kann?

Installiert ist phpmyadmin, damit ich die Datenbank leichter bearbeiten kann, jedoch hänge ich bis jetzt bei dem Problem.

Ich hoffe, dass hier jemand ist, der mir helfen kann.

Mit freundlichen Grüßen
VarmintLP


War der Beitrag hilfreich? Dann kann ein einfacher Klick auf den Danke-button ja wohl nicht schaden. Biggrin

25.03.2015 09:35
 
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren

Beiträge: 1.306
Bewertung: 6
Registriert seit: May 2009
Status: offline


Beitrag: #2
RE: JSON zu SQL

Soll das ganze automatisiert über ein PHP Script oder ein Java-Programm geschehen?

Soweit ich das sehe, unterstützt phpMyAdmin die Formate XML und CSV, welche dafür geeignet wären.

[Link: Registrierung erforderlich]
Das wäre ein Konverter dafür, kannst du mal ausprobieren und die XML via Import-Funktion in PMA importieren

25.03.2015 09:40
 
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren

Beiträge: 455
Bewertung: 22
Registriert seit: Nov 2009
Status: offline


Beitrag: #3
RE: JSON zu SQL

Hallo VarmintLP,

Genre kann ich dir ein PHP Script schreiben, dass dir den Code brauchbar für Phpmyadmin convertiert. Falls du Interesse hast, melde dich einfach Smile


Gruß
Chris


[Link: Registrierung erforderlich]

25.03.2015 10:01
 
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren

Beiträge: 433
Bewertung: 6
Registriert seit: Mar 2011
Status: offline


Beitrag: #4
RE: JSON zu SQL

Also das ganze soll automatisch ablaufen. Am besten mit einer bash oder Shell Skript die ich mit einem Crontab ausführe.

Es soll wie folgt ablaufen. Mein Prüfgerät schreibt eine .json Datei. Diese wird zu Uhrzeit X (in der config Datei festgelegt) in einen Ordner gesetzt der Send heißt, um ein versenden per sftp zu simulieren. Dann soll die .json Datei in die Datenbank hochgeladen werden. (andere Table oder die alten Werte wurden gelöscht.

Ich habe schon überlegt, mit einem line count die Linien zu zählen und mit einer schleife jede Zeile in einen SQL befehl zu convertieren. Nur weiß ich nicht genau, wie ich den Wert aus diesem Zeichenlabyrinth auslesen soll.


War der Beitrag hilfreich? Dann kann ein einfacher Klick auf den Danke-button ja wohl nicht schaden. Biggrin

25.03.2015 10:08
 
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren

Beiträge: 711
Bewertung: 11
Registriert seit: Mar 2012
Status: offline


Beitrag: #5
RE: JSON zu SQL

Hallo VarmintLP, hallo Dennis,

ein Umweg über XML finde ich nicht gut - und wäre ein unnötiger Mehraufwand.

Grundsätzlich ist JSON ein Array. Und deiner JSON-Datei fehlen für eine direkte konvertierung grundsätzliche Werte wie z.B. Tabellenname, INSERT oder UPDATE?

Um in PHP JSON umzuwandeln - mit einer Datei in deinem Format, kannst du "json_decode()" ([Link: Registrierung erforderlich]) verwenden.

Will heißen:

Code:
$JSON_STRING = '...';
$array = json_decode($JSON_STRING,true);

Nun kannst du einmal mit "print_r($array);" schauen wie das Array angelegt wird. Rein logisch müsste sowas dabei heraus kommen:

Code:
array(
0 => array (
raspid => 1,
DateTime => "08-14-01",
Temperatur => "27.0",
Status => "Normal"
),
...
)


Danach kannst du dir daraus eine Schleife mit "foreach" basteln und ein INSERT Statement erstellen:

Code:
$tmp = 'INSERT INTO mytable (raspdid, DateTime, Temperatur, Status) VALUES';
foreach($array as $entry) {
$tmp.= "('".$entry['raspid']."','".$entry['DateTime']."','".$entry['Temperatur']."','".$entry['Status']."'),";
}
echo $tmp;


Dabei sollte man beachten: Ich escape derzeit nicht den Inhalt. Defakto wäre SQL-Injection bei unsachgemäßen Eingaben möglich. Der Code ist nicht getestet und dient lediglich als Anhaltspunkt. Sollte aber so funktionieren.

Gruß


[Link: Registrierung erforderlich]

Rosen sind rot, gelb ist die Biene. Ich kann nicht dichten, Waschmaschine.

Dieser Beitrag wurde zuletzt bearbeitet: 25.03.2015 10:13 von Kalle.

25.03.2015 10:11
 
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren

Beiträge: 433
Bewertung: 6
Registriert seit: Mar 2011
Status: offline


Beitrag: #6
RE: JSON zu SQL

Ok Leute, Ich habe mir jetzt mal ein einfaches Skript erstellt, das Zeichen aus einem String nimmt. Jetzt wäre es hilfreich, wenn ich noch die einzelnen Wörter wie RaspId, DateTime, etc entfernen könnte und dann die 4 Letzten Werte in Variabeln setzen könnte.


War der Beitrag hilfreich? Dann kann ein einfacher Klick auf den Danke-button ja wohl nicht schaden. Biggrin

25.03.2015 11:02
 
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren

Beiträge: 711
Bewertung: 11
Registriert seit: Mar 2012
Status: offline


Beitrag: #7
RE: JSON zu SQL

Hey VarmintLP,

wäre vielleicht nett wenn du den Code dazu auch postest. Meine Glaskugel ist im Urlaub defakto kann ich da leider nicht sehen wie du bereits etwas umgesetzt hast. Ist es in PHP geschrieben? Batch? Shell?


[Link: Registrierung erforderlich]

Rosen sind rot, gelb ist die Biene. Ich kann nicht dichten, Waschmaschine.

26.03.2015 06:49
 
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren

Beiträge: 433
Bewertung: 6
Registriert seit: Mar 2011
Status: offline


Beitrag: #8
RE: JSON zu SQL

Kalle schrieb:
Hey VarmintLP,

wäre vielleicht nett wenn du den Code dazu auch postest. Meine Glaskugel ist im Urlaub defakto kann ich da leider nicht sehen wie du bereits etwas umgesetzt hast. Ist es in PHP geschrieben? Batch? Shell?


Keine Sorge, ich lasse natürlich niemandem im dunkeln, wenn ich es schon schreibe, aber ich muss das Skript erst noch zu ende schreiben und das kann vlt noch etwas dauernd, da ich meine Tage habe, an denen ich an dem Projekt arbeite und somit auch sowas wie das Skript voranbringe.

Also bitte noch etwas Geduld


War der Beitrag hilfreich? Dann kann ein einfacher Klick auf den Danke-button ja wohl nicht schaden. Biggrin

31.03.2015 09:47
 
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren

Beiträge: 711
Bewertung: 11
Registriert seit: Mar 2012
Status: offline


Beitrag: #9
RE: JSON zu SQL

Moment,

das verstehe ich nicht.. du möchtest wissen wie man (ich zitiere wörtlich) "noch die einzelnen Wörter wie RaspId, DateTime, etc entfernen könnte und dann die 4 Letzten Werte in Variabeln setzen könnte" - aber willst jetzt erst "das Skript erst noch zu ende schreiben".

Ich habe KEIN Interesse an deinem fertigen Script, ich hatte aber Interesse dir dabei zu helfen. Aber anscheinend ist dies nicht mehr gewünscht. Also bis die Tage.


[Link: Registrierung erforderlich]

Rosen sind rot, gelb ist die Biene. Ich kann nicht dichten, Waschmaschine.

31.03.2015 11:24
 
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren

Beiträge: 433
Bewertung: 6
Registriert seit: Mar 2011
Status: offline


Beitrag: #10
RE: JSON zu SQL

Naja ich arbeite in den Projektstunden die ich in der Schule habe an dem Projekt. Deswegen werde ich erst Morgen weiter dran arbeiten, aber ich habe schon eine Idee, wie ich das machen kann.

Edit:

Damit ich nun dieses Thema hier abschließen kann, werde ich mein Skript JSONToSQL.sh hier einmal veröffentlichen.

Es handelt sich lediglich um entfernte und ersetzte Zeichen, die das austeilen in einzelne Variabeln, die in einen Array eingefügt werden, um in eine SQL-Zeile hinzugefügt werden.

Code:
#!/bin/bash

source /home/pi/config.sh

while read line
do
    name=$line

    String=${name//\"}
    StringX=${String//\{}
    StringY=${StringX//\}}
    StringZ=${StringY//,/ }
    StringZX=${StringZ//:/ }
        StringZY=${StringZX//_/ }


    Wert=()
    IFS=' '

    for i in $StringZY
    do
        Wert+=($i)
    done
    unset IFS

    if [ $name != "[" ]; then
        mysql --user="$MYSQL_ROOT" --password="$MYSQL_PASS" -e "INSERT INTO RaspPiThermo.ThermoTest1 (raspid,DateTime,value,Status) VALUES ('${Wert[1]}','${Wert[3]}  ${Wert[4]}:${Wert[5]}:${Wert[6]}','${Wert[8]}','${Wert[10]}');"
    fi
done < $file

exit


Ich habe mir dioe Kommentierung noch gesparrt, da ich noch vereinzelte änderungen vornehmen werde, aber wer möchte, dem kann ich gerne noch ein paar Kommentare hinzuschreiben.


War der Beitrag hilfreich? Dann kann ein einfacher Klick auf den Danke-button ja wohl nicht schaden. Biggrin

Dieser Beitrag wurde zuletzt bearbeitet: 01.04.2015 09:37 von VarmintLP.

31.03.2015 11:49
 
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Antwort schreiben  Thema schreiben 
 Seiten (2): « Erste 1 2 Nächste > Letzte »

Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  PHP/JSON-Problem JH MEDIA 6 1.510 21.01.2015 20:51
Letzter Beitrag: ValidSigns
  JSON eret12 16 2.472 28.12.2013 00:37
Letzter Beitrag: push

 Druckversion anzeigen
 Thema einem Freund senden
 Thema abonnieren
 Thema zu den Favoriten hinzufügen

Sponsor-Board.de

Community
Über uns
Partner
Powered by Mybb: Copyright 2002-2024 by MyBB Group - Deutsche-Übersetzung von Mybb.de
 
© 2007-2024 Sponsor-Board.de - Hosted by OVH

Willkommen auf SB!   Sie benötigen ein Sponsoring?   1. Anmelden   2. Sponsoring-Anfrage erstellen   3. Nachrichten von Sponsoren erhalten   Kostenlos!   Jetzt registrieren