Prerequisiti:
È necessario installare l'ultima versione dei pacchetti PostgreSQL sul sistema operativo Linux prima di eseguire le istruzioni SQL mostrate in questo tutorial. Esegui i seguenti comandi per installare e avviare PostgreSQL:
1 2 3 | $ sudo apt-get -y installa postgresql postgresql-confrib |
Esegui il seguente comando per accedere a PostgreSQL con l'autorizzazione alla radice:
1 | $ sudo -u postgres psql |
Formato esagonale bytea:
I dati binari sono codificati come due cifre esadecimali per byte in esadecimale formato. La stringa binaria è preceduta dalla sequenza, \ x. Le cifre esadecimali possono essere maiuscole o minuscole. Questo formato è supportato da una vasta gamma di applicazioni esterne.
Esempio:
1 | # Seleziona e '\\ xabc0110' come hex_format; |
Formato di fuga bytea:
IL fuga Il formato è il tradizionale formato postgresql. Una sequenza di caratteri ASCII viene utilizzata per rappresentare i dati binari in formato di fuga. La stringa binaria viene convertita in un valore ottale a tre cifre preceduto da due backsheshes.
Ottetti sfacciati letterale di bytea:
Valore decimale | Descrizione | Input sfuggito | Esempio | Produzione |
---|---|---|---|---|
0 | Zero ottetto | E '\\ 000' | Seleziona e '\\ 000' :: bytea; | \ x00 |
45 | Trattino | '-' o e '\\ 055' | Seleziona e '\-' :: bytea; | \ x2d |
110 | 'N' | 'n' o e '\\ 156' | Seleziona e '\ n' :: bytea; | \ x6e |
0 a 31 e 127 a 255 | Otto non stampabili | E '\\ xxx' (valore ottale) | Seleziona e '\\ 001' :: bytea; | \ x01 |
Ottetti sfuggiti all'uscita bytea:
Valore decimale | Descrizione | Output sfuggito | Esempio | Produzione |
---|---|---|---|---|
45 | Trattino | - | Seleziona e '\\ 055' :: bytea; | - |
32 a 126 | Ottetti stampabili | Qualsiasi carattere stampabile | Seleziona e '\\ 156' :: bytea; | N |
0 a 31 e 127 a 255 | Otto non stampabili | \ xxx (valore ottale) | Seleziona e '\\ 001' :: bytea; | \ 001 |
Utilizzo del tipo di dati binari in PostgreSQL:
Prima di creare qualsiasi tabella con il tipo di dati booleani, è necessario creare un database PostgreSQL. Quindi, esegui il seguente comando per creare un database chiamato 'testdb':
1 | # Crea test Database TestDB; |
Verrà visualizzato il seguente output dopo la creazione del database:
Esempio-1: crea una tabella con un tipo di dati binari per archiviare il valore ottale
Crea una tabella chiamata 'tbl_binary_1'Nel database corrente con due campi. Il primo nome di campo è id che è la chiave principale della tabella. Il valore di questo campo verrà incrementato automaticamente quando un nuovo record si inserisce. Il secondo nome del campo è binary_data E il tipo di dati è Bytea.
1 2 3 4 | # Crea table Tbl_binary_1 ( Chiave primaria seriale ID, binary_data bytea); |
Verrà visualizzato il seguente output dopo aver eseguito la query sopra:
Eseguire la seguente query di inserto che inserirà due valori ottali nel tbl_binary_1 tavolo:
1 2 3 4 5 | # Inserisci in tbl_binary_1 (binary_data) VALORI (E '\\ 055'), (E '\\ 156'); |
Verrà visualizzato il seguente output dopo aver eseguito la query sopra:
Esegui la seguente query Seleziona che leggerà tutti i record da tbl_binary_1 tavolo:
1 | # Seleziona * da tbl_binary_1; |
Verrà visualizzato il seguente output dopo aver eseguito la query sopra. L'output mostra il valore esadecimale del valore ottale.
Esempio 2: crea una tabella con un tipo di dati binari per archiviare i dati dell'immagine
Crea una tabella chiamata 'tbl_binary_2'Nel database corrente con tre campi. Il primo nome di campo è id che è la chiave primaria della tabella e il valore di questo campo verrà incrementato automaticamente quando verrà inserito un nuovo record. Il secondo nome del campo è image_name E il tipo di dati è Varchar (20). Il nome dell'immagine verrà archiviato in questo campo. Il terzo nome di campo è Image_data E il tipo di dati di questo campo è Bytea. I dati dell'immagine verranno archiviati in questo campo.
1 2 3 4 5 | # Crea table Tbl_binary_2 ( Chiave primaria seriale ID, image_name varchar (20), bytea image_data); |
Verrà visualizzato il seguente output dopo aver eseguito la query sopra.
Inserire un'immagine nella tabella usando PHP:
Crea un file PHP chiamato insert_image.PHP con il seguente codice che leggerà il contenuto di un file di immagine. Quindi, memorizza l'immagine nella tabella PostgreSQL dopo averla convertita in dati binari.
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 | // Visualizza impostazione di errore ini_set ('display_errors', 1); error_reporting (e_all); $ host = "localhost"; $ user = "Postgres"; $ pass = "12345"; $ db = "testdb"; // Crea oggetto di connessione al database $ db_connection = pg_connect ("host = $ host dbname = $ db user = $ utente password = $ pass") o morire ("Impossibile connettersi al server \ n"); $ fileName = "fiore.png "; $ image = fopen ($ fileName, 'r') o die ("Impossibile aprire il file."); $ data = FREAD ($ Image, fileSize ($ nome file)); $ cdata = pg_escape_bytea ($ data); fclose ($ immagine); // Inserisci i dati dell'immagine $ query = "Insert in tbl_binary_2 (image_name, image_data) valori ('$ fileName', '$ cdata')"; $ result = pg_query ($ db_connection, $ query); if ($ risultato) eco "I dati dell'immagine vengono inseriti correttamente."; pg_close ($ db_connection); ?> |
Verrà visualizzato il seguente output dopo aver eseguito lo script sopra dal server locale e il file di immagine esistente nella posizione corrente:
Leggi i dati dell'immagine dalla tabella usando PHP:
Crea un file PHP chiamato get_image.PHP con il seguente codice che leggerà i dati binari di un file di immagine. Crea l'immagine dai dati binari e visualizza l'immagine nel browser.
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 | // Visualizza impostazione di errore ini_set ('display_errors', 1); error_reporting (e_all); $ host = "localhost"; $ user = "Postgres"; $ pass = "12345"; $ db = "testdb"; // Crea oggetto di connessione al database $ db_connection = pg_connect ("host = $ host dbname = $ db user = $ utente password = $ pass") o morire ("Impossibile connettersi al server \ n"); // Leggi i dati dell'immagine dalla tabella $ query = "Seleziona immagine_data da tbl_binary_2 dove id = 1"; $ result = pg_query ($ db_connection, $ query) o die (pg_last_error ($ db_connection)); $ data = pg_fetch_result ($ risultato, 'image_data'); $ cimage = pg_unescape_bytea ($ dati); // crea un file di immagine con i dati dell'immagine recuperati dalla tabella $ fileName = "myfile.jpg "; $ image = fopen ($ nome file, 'wb') o die ("Impossibile aprire l'immagine."); fwrite ($ image, $ cimage) o die ("Impossibile scrivere dati."); fclose ($ immagine); pg_close ($ db_connection); // Visualizza l'immagine nel browser eco ""; ?> |
L'immagine generata dai dati dell'immagine verrà visualizzata dopo aver eseguito lo script sopra dal server locale.
Conclusione:
In questo tutorial è stato mostrato lo scopo di utilizzare i tipi di dati binari e diversi usi dei dati binari in PostgreSQL.