LabVIEWForum.de - Dateien in SQL Datenbank ablegen

LabVIEWForum.de

Normale Version: Dateien in SQL Datenbank ablegen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Guten Morgen,

wie kann man mit LV8.2 komplette Dateien (z.B. PDFs, TXT-Files, ZIPs) in einer SQL Datenbank (MySQL MEDIUMBLOB Feld, bis 16MB) ablegen und auch wieder auslesen?

Hat das schonmal jemand versucht?


grüße

basti
Speichere doch einfach den Pfad der Dateien ab.
Wie Du eine ganze Datei in eine DB schreiben kannst, weiß ich nicht. Das geht aber bestimmt auch gar nicht.
Ich habe hier PostgreSQL-DB und speichere nur den Dokumentenpfad. Das klappt problemlos.

Gruß Markus
' schrieb:Speichere doch einfach den Pfad der Dateien ab.
Wie Du eine ganze Datei in eine DB schreiben kannst, weiß ich nicht. Das geht aber bestimmt auch gar nicht.
Ich habe hier PostgreSQL-DB und speichere nur den Dokumentenpfad. Das klappt problemlos.

Gruß Markus

Ich denke gehen muss es schon irgendwie. Ich kann ja auch über den browser mittels php scripten daten in der sql datenbank ablegen...
Wie soll dann so ein SQL-Befehl aussehen?
INSERT test.pdf INTO pdf_tabelle; ?? Ich kann's mir nicht vorstellen.

Gruß Markus

' schrieb:Ich denke gehen muss es schon irgendwie. Ich kann ja auch über den browser mittels php scripten daten in der sql datenbank ablegen...
Ich glaube, da wird nur ein "Vermerk" in der DB gemacht...dieses File ist "eingecheckt"...und damit ist ein Lösch/Schreibschutz auf der Datei. Das File selber bleibt irgendwo in der OS-Ordnerstruktur gespeichert, allerdings hat die DB jetzt die Finger drauf...

A.
Achso. Das könnte ich mir auch vorstellen.
Aber ich verstehe nicht, wieso man nicht einfach den Dokumentenpfad (als Text oder Varchar) speichert und gut ist.....

Gruß Markus

' schrieb:Ich glaube, da wird nur ein "Vermerk" in der DB gemacht...dieses File ist "eingecheckt"...und damit ist ein Lösch/Schreibschutz auf der Datei. Das File selber bleibt irgendwo in der OS-Ordnerstruktur gespeichert, allerdings hat die DB jetzt die Finger drauf...

A.
' schrieb:Aber ich verstehe nicht, wieso man nicht einfach den Dokumentenpfad (als Text oder Varchar) speichert und gut ist.....

Na weil dann nicht sichergestellt ist, dass die Datei auch dort bleibt und auch unverändert bleibt...
hallo

ich denk mal so ... die datei in LabVIEW einlesensiehe bild1 und dann den sql string basteln ... bild2

db access mach ich über das ADO tool http://ib-berger.com/index.php?action=adotool

Code:
INSERT INTO `fl` ( `id` , `fl` )
VALUES (
'', 0xffd8ffe000104a46494600010101006000600------gekürzt------0014514500145145007fffd9
);

das feld 'fl' ist als mediumblob definiert ....


auslesen hab ich noch nicht gemacht funzt aber bestimmt auch in der art ...hab heut nur keine zeit mehr ...

toaran


[attachment=9307]

[attachment=9308]
danke erstmal für eure tipps. werd mich nachher mal ans testen machen und berichten.
Es ist durchaus möglich binäre Daten in ein BLOB-Feld einer Datenbank zu speichern. Ich verwende dazu das LabVIEW Database Connectivity Toolset von NI (welches letztendlich auch nur über ADO und den entsprechenden ODBC-Treiber auf die Datenbank zugreift).

Dazu muss eine Parameterized Query mit dem VI "DB Tools Create Parameterized Query.vi" erzeugt werden, der als Parameter die binären Daten in Form eines U8-Arrays übergeben werden (z.B. durch Serialisierung der Daten in einen String und Umwandeln des Strings in das U8-Array). Die Größe der binären Daten ist dabei nicht beschränkt (nur durch die mögliche BLOB-Größe des Datenbanksystems).

Zum Auslesen der BLOB-Daten aus der Datenbank können die normalen SELECT-Befehle verwendet werden. Die erhaltenen Variantdaten müssen dann in umgekehrter Reihenfolge wieder in das Ausgangsdatenformat der Binärdaten umgewandelt werden.

Der Screenshot zeigt beispielhaft das Einfügen und wiederauslesen der Binärdaten (hier eines JPG-Bildes). Bei COL_BLOB handelt es sich dabei um ein BLOB-Feld der Tabelle TESTTABLE der Datenbank.

[attachment=9320]

Diese Vorgehensweise funktioniert auf alle Fälle mit dem Datenbanksystem Firebird 2.0. Ich denke aber, dass auch MySQL und der zugehörige ODBC-Treiber entsprechende Funktionalität besitzen.

Prinzipiell benötigt man nicht unbedingt das Database Connectivity Toolset von National Instruments. Man kann auch direkt auf die entsprechenden ADO-Funktionen (ActiveX-Komponenten) zugreifen. Dazu ist aber detailliertes Wissen zu ADO erforderlich (welches in vorhin genanntem Toolset bereits fertig implementiert ist).
Seiten: 1 2
Referenz-URLs