Tipo di dati binari postgresql

Tipo di dati binari postgresql
Il tipo di dati binari è un altro utile tipo di dati di PostgreSQL per archiviare i dati di stringa binaria. La sequenza di byte o ottetti è memorizzata nella stringa binaria. L'ottetto a valore zero e gli ottetti non stampabili possono essere archiviati nel campo del tipo di dati binari. I byte grezzi sono conservati dalle corde binarie. Il valore di input della stringa binaria può essere prelevato da "esagono" o "fuga" Formato e il formato dell'uscita dipende dal parametro di configurazione, bytea_output. Il formato di output predefinito è 'esadecimale'. L'oggetto BLOB o BINARY BRIG è definito dallo standard SQL come tipo di stringa binaria. In questo tutorial sono stati mostrati diversi formati e gli usi dei tipi di dati binari in PostgreSQL.

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
$ sudo systemctl Inizia postgresql.servizio

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.