Voraussetzungen:
Sie müssen die neueste Version von PostgreSQL -Paketen auf dem Linux -Betriebssystem installieren, bevor Sie die in diesem Tutorial gezeigten SQL -Anweisungen ausführen. Führen Sie die folgenden Befehle aus, um die Postgresql zu installieren und zu starten:
1 2 3 | $ sudo apt-get -y install postgresql postgresql-contrib |
Führen Sie den folgenden Befehl aus, um sich mit Root -Erlaubnis bei PostgreSQL anzumelden:
1 | $ sudo -u postgres psql |
Bytea -Hex -Format:
Die binären Daten werden als zwei hexadezimale Ziffern pro Byte in codiert verhexen Format. Der Binärqualität geht die Sequenz \ x voraus. Die hexadezimalen Ziffern können entweder Großbuchstaben oder Unterkoffer sein. Dieses Format wird durch eine Vielzahl externer Anwendungen unterstützt.
Beispiel:
1 | # Wählen Sie E '\\ XABC0110' als hex_format; |
Bytea Escape Format:
Der fliehen Format ist das traditionelle PostgreSQL -Format. Eine Abfolge von ASCII -Zeichen wird verwendet, um die Binärdaten im Escape -Format darzustellen. Die binäre Zeichenfolge wird in einen dreistelligen Oktalwert umgewandelt, vor dem zwei Backslashes vorangegangen sind.
Bytea buchstäblich entkommen Oktette:
Dezimalwert | Beschreibung | Entkommene Eingabe | Beispiel | Ausgang |
---|---|---|---|---|
0 | Null Oktett | E '\\ 000' | Wählen Sie e '\\ 000' :: bytea; | \ x00 |
45 | Bindestrich | '-' oder e '\\ 055' | Wählen Sie e '\-' :: bytea; | \ x2d |
110 | 'N' | 'n' oder e '\\ 156' | Wählen Sie e '\ n' :: bytea; | \ x6e |
0 bis 31 und 127 bis 255 | Nicht druckbare Oktetten | E '\\ xxx' (Oktalwert) | Wählen Sie e '\\ 001' :: bytea; | \ x01 |
Bytea -Ausgang entging Oktetten:
Dezimalwert | Beschreibung | Entkommene Ausgabe | Beispiel | Ausgang |
---|---|---|---|---|
45 | Bindestrich | - | Wählen Sie e '\\ 055' :: bytea; | - |
32 bis 126 | Druckbare Oktetten | Jeder druckbare Charakter | Wählen Sie e '\\ 156' :: bytea; | N |
0 bis 31 und 127 bis 255 | Nicht druckbare Oktetten | \ xxx (Oktalwert) | Wählen Sie e '\\ 001' :: bytea; | \ 001 |
Verwendung des binären Datentyps in PostgreSQL:
Bevor Sie eine Tabelle mit dem Booleschen Datentyp erstellen, müssen Sie eine PostgreSQL -Datenbank erstellen. Führen Sie also den folgenden Befehl aus, um eine Datenbank mit dem Namen 'zu erstellentestdb':
1 | # Datenbank testdb erstellen; |
Nach dem Erstellen der Datenbank wird die folgende Ausgabe angezeigt:
Beispiel 1: Erstellen Sie eine Tabelle mit einem binären Datentyp, um den Oktalwert zu speichern
Erstellen Sie eine Tabelle mit dem Namen 'TBL_BINY_1'In der aktuellen Datenbank mit zwei Feldern. Der erste Feldname ist Ausweis Welches ist der Hauptschlüssel der Tabelle. Der Wert dieses Feldes wird automatisch erhöht, wenn ein neuer Datensatz eingefügt wird. Der zweite Feldname ist Binärdaten und der Datentyp ist Bytea.
1 2 3 4 | # TABLE TBL_BINY_1 CREATE TABLE CREATE Id serielle Primärschlüssel, Binary_Data Bytea); |
Die folgende Ausgabe erscheint nach Ausführung der obigen Abfrage:
Führen Sie die folgende Einfügungsabfrage aus, die zwei Oktalwerte in die einfügt TBL_BINY_1 Tisch:
1 2 3 4 5 | # In TBL_BINY_1 (BINARY_DATA) einfügen WERTE (E '\\ 055'), (E '\\ 156'); |
Die folgende Ausgabe erscheint nach Ausführung der obigen Abfrage:
Führen Sie die folgende Auswahlabfrage aus, mit der alle Datensätze aus dem gelesen werden TBL_BINY_1 Tisch:
1 | # Aus TBL_BINY_1 auswählen; |
Nach der Ausführung der obigen Abfrage wird die folgende Ausgabe angezeigt. Die Ausgabe zeigt den hexadezimalen Wert des Oktalwerts.
Beispiel 2: Erstellen Sie eine Tabelle mit einem binären Datentyp, um Bilddaten zu speichern
Erstellen Sie eine Tabelle mit dem Namen 'TBL_BINY_2'In der aktuellen Datenbank mit drei Feldern. Der erste Feldname ist Ausweis Dies ist der Hauptschlüssel der Tabelle und der Wert dieses Feldes wird automatisch erhöht, wenn ein neuer Datensatz eingefügt wird. Der zweite Feldname ist Image_Name und der Datentyp ist Varchar (20). Der Bildname wird in diesem Feld gespeichert. Der dritte Feldname ist Image_data und der Datentyp dieses Feldes ist Bytea. Die Bilddaten werden in diesem Feld gespeichert.
1 2 3 4 5 | # TABLE TBL_BINY_2 CREATE TABLE CREATE Id serielle Primärschlüssel, Image_Name varchar (20), Image_Data Bytea); |
Nach der Ausführung der obigen Abfrage wird die folgende Ausgabe angezeigt.
Fügen Sie ein Bild mit PHP in die Tabelle ein:
Erstellen Sie eine PHP -Datei mit dem Namen Bild einfügen.Php mit dem folgenden Code, der den Inhalt einer Bilddatei liest. Speichern Sie das Bild dann in der PostgreSQL -Tabelle, nachdem Sie es in Binärdaten konvertiert haben.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | // Fehlereinstellung anzeigen ini_set ('display_errors', 1); ERROR_REPORTING (E_ALL); $ host = "localhost"; $ user = "postgres"; $ pass = "12345"; $ db = "testdb"; // Datenbankverbindungsobjekt erstellen $ db_connection = pg_connect ("host = $ host dbname = $ db user = $ user password = $ pass")) oder sterben ("konnte keine Verbindung zum Server \ n" herstellen); $ Dateiname = "Blume.png "; $ image = fopen ($ Dateiname, 'r') oder sterben ("Die Datei kann nicht geöffnet werden."); $ data = fread ($ image, filesize ($ fileName)); $ cdata = pg_escape_bytea ($ data); fcLose ($ image); // die Bilddaten einfügen $ query = "In TBL_BINY_2 (Image_Name, Image_Data) Werte ('$ Dateiname', '$ cdata') einfügen; $ result = pg_query ($ db_connection, $ query); Wenn ($ result) echo "Bilddaten werden erfolgreich eingefügt."; pg_close ($ db_connection); ?> |
Die folgende Ausgabe wird angezeigt, nachdem das obige Skript vom lokalen Server ausgeführt wurde und die Bilddatei im aktuellen Ort vorhanden ist:
Lesen Sie die Bilddaten aus der Tabelle mit PHP:
Erstellen Sie eine PHP -Datei mit dem Namen get_image.Php mit dem folgenden Code, der die Binärdaten einer Bilddatei liest. Erstellen Sie das Bild aus den Binärdaten und zeigen Sie das Bild im Browser an.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | // Fehlereinstellung anzeigen ini_set ('display_errors', 1); ERROR_REPORTING (E_ALL); $ host = "localhost"; $ user = "postgres"; $ pass = "12345"; $ db = "testdb"; // Datenbankverbindungsobjekt erstellen $ db_connection = pg_connect ("host = $ host dbname = $ db user = $ user password = $ pass")) oder sterben ("konnte keine Verbindung zum Server \ n" herstellen); // Lesen Sie die Bilddaten aus der Tabelle aus $ query = "Image_data aus TBL_BINY_2 WHO ID ID = 1"; $ result = pg_query ($ db_connection, $ query) oder sterben (pg_last_error ($ db_connection)); $ data = pg_fetch_result ($ result, 'image_data'); $ cimage = pg_unescape_bytea ($ data); // Erstellen Sie eine Bilddatei mit den aus der Tabelle abgerufenen Bilddaten $ Dateiname = "myfile.JPG "; $ image = fopen ($ Dateiname, 'wb') oder sterben ("Image kann nicht geöffnet werden."); FWrite ($ image, $ cimage) oder sterben ("Daten nicht schreiben können."); fcLose ($ image); pg_close ($ db_connection); // Zeigen Sie das Bild im Browser an echo ""; ?> |
Das generierte Bild aus den Bilddaten wird nach der Ausführung des obigen Skripts vom lokalen Server angezeigt.
Abschluss:
Der Zweck der Verwendung von Binärdatentypen und unterschiedlichen Verwendungen von Binärdaten in PostgreSQL wurde in diesem Tutorial gezeigt, das dem neuen PostgreSQL -Benutzer hilft, mit dem binären Datentyp zu arbeiten.