Forutsetninger:
Du må installere den nyeste versjonen av PostgreSQL -pakker på Linux -operativsystemet før du utfører SQL -uttalelsene som vises i denne opplæringen. Kjør følgende kommandoer for å installere og starte PostgreSQL:
1 2 3 | $ sudo apt-get -y installer postgreSql postgreSql-contrib |
Kjør følgende kommando for å logge inn på PostgreSQL med rottillatelse:
1 | $ sudo -u postgres psql |
Bytea Hex -format:
De binære dataene er kodet som to heksadesimale sifre per byte i hex format. Den binære strengen er gitt av sekvensen, \ x. Heksadesimale sifrene kan være enten store bokstaver eller små bokstaver. Dette formatet støttes av et bredt spekter av eksterne applikasjoner.
Eksempel:
1 | # Velg e '\\ xabc0110' som hex_format; |
Bytea Escape Format:
De flukt Formatet er det tradisjonelle PostgreSQL -formatet. En sekvens av ASCII -tegn brukes til å representere de binære dataene i rømningsformat. Den binære strengen omdannes til en tresifret oktalverdi foran med to tilbakeslag.
Bytea Literal rømte oktetter:
Desimalverdi | Beskrivelse | Slapp unna inngang | Eksempel | Produksjon |
---|---|---|---|---|
0 | Null oktett | E '\\ 000' | Velg E '\\ 000' :: Bytea; | \ x00 |
45 | Bindestrek | '-' eller e '\\ 055' | Velg E '\-' :: Bytea; | \ x2d |
110 | 'n' | 'n' eller e '\\ 156' | Velg E '\ n' :: Bytea; | \ x6e |
0 til 31 og 127 til 255 | Ikke-utskrivbare oktetter | E '\\ xxx' (oktal verdi) | Velg E '\\ 001' :: Bytea; | \ x01 |
Bytea -utgang slapp unna oktetter:
Desimalverdi | Beskrivelse | Slapp unna utdata | Eksempel | Produksjon |
---|---|---|---|---|
45 | Bindestrek | - | Velg E '\\ 055' :: Bytea; | - |
32 til 126 | Utskrivbare oktetter | Enhver utskrivbar karakter | Velg E '\\ 156' :: Bytea; | n |
0 til 31 og 127 til 255 | Ikke-utskrivbare oktetter | \ xxx (oktal verdi) | Velg E '\\ 001' :: Bytea; | \ 001 |
Bruk av binær datatype i PostgreSQL:
Før du oppretter en tabell med den boolske datatypen, må du opprette en PostgreSQL -database. Så kjør følgende kommando for å opprette en database som heter 'Testdb':
1 | # Opprett databasetestdb; |
Følgende utdata vises etter å ha opprettet databasen:
Eksempel 1: Lag en tabell med en binær datatype for å lagre oktalverdi
Lag en tabell som heter 'tbl_binary_1'I den nåværende databasen med to felt. Det første feltnavnet er id som er den primære nøkkelen til tabellen. Verdien av dette feltet vil bli økt automatisk når en ny post vil sette inn. Det andre feltnavnet er Binary_data Og datatypen er Bytea.
1 2 3 4 | # Opprett tabell TBL_BINARY_1 ( ID Seriell primærnøkkel, binær_data bytea); |
Følgende utgang vises etter utførelse av spørringen ovenfor:
Kjør følgende sett inn spørring som vil sette inn to oktale verdier i tbl_binary_1 bord:
1 2 3 4 5 | # Sett inn i tbl_binary_1 (binary_data) Verdier (E '\\ 055'), (E '\\ 156'); |
Følgende utgang vises etter utførelse av spørringen ovenfor:
Kjør følgende velger spørring som vil lese alle poster fra tbl_binary_1 bord:
1 | # Velg * fra tbl_binary_1; |
Følgende utdata vises etter utførelsen av spørringen ovenfor. Utgangen viser den heksadesimale verdien av oktalverdien.
Eksempel-2: Lag en tabell med en binær datatype for å lagre bildedata
Lag en tabell som heter 'tbl_binary_2'I den nåværende databasen med tre felt. Det første feltnavnet er id som er den primære nøkkelen til tabellen, og verdien av dette feltet vil bli økt automatisk når en ny post blir satt inn. Det andre feltnavnet er Image_name Og datatypen er Varchar (20). Bildenavnet vil bli lagret i dette feltet. Det tredje feltnavnet er image_data Og datatypen til dette feltet er Bytea. Bildedataene vil bli lagret i dette feltet.
1 2 3 4 5 | # Opprett tabell TBL_BINARY_2 ( ID Seriell primærnøkkel, Image_name varchar (20), image_data bytea); |
Følgende utdata vises etter utførelsen av spørringen ovenfor.
Sett inn et bilde i tabellen ved hjelp av PHP:
Opprett en PHP -fil som heter INSERT_IMAGE.PHP med følgende kode som vil lese innholdet i en bildefil. Oppbevar deretter bildet i PostgreSQL -tabellen etter å ha konvertert det til binære data.
1 2 3 4 5 6 7 8 9 10 11 12 1. 3 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 | // Vis feilinnstilling ini_set ('display_errors', 1); error_rapporting (e_all); $ host = "localhost"; $ bruker = "Postgres"; $ pass = "12345"; $ db = "testdb"; // Opprett databaseforbindelsesobjekt $ db_connection = pg_connect ("host = $ host dbname = $ db bruker = $ bruker passord = $ pass") eller dø ("kunne ikke koble til server \ n"); $ filnavn = "blomst.png "; $ image = fopen ($ filnavn, 'r') eller dø ("Kan ikke åpne filen."); $ data = Fread ($ image, FilSize ($ filnavn)); $ cdata = pg_escape_bytea ($ data); fclose ($ image); // Sett inn bildedataene $ spørring = "sett inn i tbl_binary_2 (image_name, image_data) verdier ('$ filnavn', '$ cdata')"; $ resultat = pg_query ($ db_connection, $ spørring); hvis ($ resultat) ekko "bildedata er satt inn."; PG_CLOSE ($ DB_CONNECTION); ?> |
Følgende utdata vises etter å ha utført skriptet ovenfor fra den lokale serveren og bildefilen som finnes på det nåværende stedet:
Les bildedataene fra tabellen ved hjelp av PHP:
Opprett en PHP -fil som heter get_image.PHP Med følgende kode som vil lese de binære dataene fra en bildefil. Lag bildet fra de binære dataene og vis bildet i nettleseren.
1 2 3 4 5 6 7 8 9 10 11 12 1. 3 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 | // Vis feilinnstilling ini_set ('display_errors', 1); error_rapporting (e_all); $ host = "localhost"; $ bruker = "Postgres"; $ pass = "12345"; $ db = "testdb"; // Opprett databaseforbindelsesobjekt $ db_connection = pg_connect ("host = $ host dbname = $ db bruker = $ bruker passord = $ pass") eller dø ("kunne ikke koble til server \ n"); // Les bildedataene fra tabellen $ spørring = "Velg Image_Data fra tbl_binary_2 hvor id = 1"; $ resultat = pg_query ($ db_connection, $ spørring) eller die (pg_last_error ($ db_connection)); $ data = pg_fetch_result ($ resultat, 'image_data'); $ cimage = pg_unescape_bytea ($ data); // Opprett en bildefil med bildedata hentet fra tabellen $ filnavn = "myfile.jpg "; $ image = fopen ($ filnavn, 'wb') eller dø ("Kan ikke åpne bilde."); fwrite ($ image, $ cimage) eller die ("Kan ikke skrive data."); fclose ($ image); PG_CLOSE ($ DB_CONNECTION); // Vis bildet i nettleseren ekko ""; ?> |
Det genererte bildet fra bildedataene vises etter å ha utført skriptet ovenfor fra den lokale serveren.
Konklusjon:
Hensikten med å bruke binære datatyper og forskjellige bruksområder av binære data i PostgreSQL er vist i denne opplæringen som vil hjelpe den nye PostgreSQL -brukeren til å jobbe med den binære datatypen.