Conditions préalables:
Vous devez installer la dernière version des packages PostgreSQL sur le système d'exploitation Linux avant d'exécuter les instructions SQL affichées dans ce tutoriel. Exécutez les commandes suivantes pour installer et démarrer le postgresql:
1 2 3 | $ sudo apt-get -y installer postgresql postgresql-contrib |
Exécutez la commande suivante pour vous connecter à PostgreSQL avec l'autorisation racine:
1 | $ sudo -u postgres psql |
Format HEX BYTEA:
Les données binaires sont codées sous forme de deux chiffres hexadécimaux par octet dans hexagonal format. La chaîne binaire est précédée par la séquence, \ x. Les chiffres hexadécimaux peuvent être soit majuscules, soit en minuscules. Ce format est pris en charge par une large gamme d'applications externes.
Exemple:
1 | # SELECT E '\\ XABC0110' comme HEX_FORMAT; |
Format d'évasion Bytea:
Le s'échapper Le format est le format postgresql traditionnel. Une séquence de caractères ASCII est utilisée pour représenter les données binaires au format d'échappement. La chaîne binaire est convertie en une valeur octale à trois chiffres précédé de deux barres à barres.
Bytea littéral a échappé aux octets:
Valeur décimale | Description | Entrée échappée | Exemple | Sortir |
---|---|---|---|---|
0 | Octet zéro | E '\\ 000' | Sélectionnez E '\\ 000' :: bytea; | \ x00 |
45 | Trait d'union | '-' ou e '\\ 055' | Sélectionnez E '\ -' :: bytea; | \ x2d |
110 | 'n' | 'n' ou e '\\ 156' | Sélectionnez e '\ n' :: bytea; | \ x6e |
0 à 31 et 127 à 255 | Octets non imprimables | E '\\ xxx' (valeur octale) | Sélectionnez E '\\ 001' :: bytea; | \ x01 |
Onttea Sortie a échappé aux octets:
Valeur décimale | Description | Sortie échappée | Exemple | Sortir |
---|---|---|---|---|
45 | Trait d'union | - | Sélectionnez E '\\ 055' :: bytea; | - |
32 à 126 | Octets imprimables | Tout caractère imprimable | Sélectionnez E '\\ 156' :: bytea; | n |
0 à 31 et 127 à 255 | Octets non imprimables | \ xxx (valeur octale) | Sélectionnez E '\\ 001' :: bytea; | \ 001 |
Utilisation du type de données binaires dans PostgreSQL:
Avant de créer une table avec le type de données booléen, vous devez créer une base de données PostgreSQL. Donc, exécutez la commande suivante pour créer une base de données nommée 'testdb':
1 | # Créer une base de données testdb; |
La sortie suivante apparaîtra après avoir créé la base de données:
Exemple-1: Créez une table avec un type de données binaires pour stocker la valeur octale
Créer une table nommée 'tbl_binary_1'Dans la base de données actuelle avec deux champs. Le premier nom de champ est identifiant qui est la clé principale du tableau. La valeur de ce champ sera incrémentée automatiquement lorsqu'un nouvel enregistrement inséra. Le deuxième nom de champ est données binaires et le type de données est Bytea.
1 2 3 4 | # Créer une table tbl_binary_1 ( Clé primaire en série ID, binary_data bytea); |
La sortie suivante apparaîtra après avoir exécuté la requête ci-dessus:
Exécutez la requête d'insertion suivante qui inséra deux valeurs octales dans le tbl_binary_1 tableau:
1 2 3 4 5 | # Insérer dans tbl_binary_1 (binary_data) VALEURS (E '\\ 055'), (E '\\ 156'); |
La sortie suivante apparaîtra après avoir exécuté la requête ci-dessus:
Exécutez la requête de sélection suivante qui lira tous les enregistrements dans le tbl_binary_1 tableau:
1 | # Select * from tbl_binary_1; |
La sortie suivante apparaîtra après avoir exécuté la requête ci-dessus. La sortie montre la valeur hexadécimale de la valeur octale.
Exemple-2: Créez une table avec un type de données binaires pour stocker les données d'image
Créer une table nommée 'tbl_binary_2'Dans la base de données actuelle avec trois champs. Le premier nom de champ est identifiant qui est la clé principale du tableau et la valeur de ce champ sera incrémentée automatiquement lorsqu'un nouvel enregistrement sera inséré. Le deuxième nom de champ est Image_name et le type de données est Varchar (20). Le nom de l'image sera stocké dans ce champ. Le troisième nom de champ est image_data et le type de données de ce champ est Bytea. Les données d'image seront stockées dans ce domaine.
1 2 3 4 5 | # Créer la table tbl_binary_2 ( Clé primaire en série ID, Image_name Varchar (20), image_data bytea); |
La sortie suivante apparaîtra après avoir exécuté la requête ci-dessus.
Insérez une image dans le tableau à l'aide de PHP:
Créer un fichier PHP nommé Insérer une image.php avec le code suivant qui lira le contenu d'un fichier image. Ensuite, stockez l'image dans la table PostgreSQL après les avoir converties en données binaires.
1 2 3 4 5 6 7 8 9 dix 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 | // Afficher le réglage d'erreur ini_set ('display_errors', 1); error_reporting (e_all); $ host = "localhost"; $ user = "Postgres"; $ pass = "12345"; $ db = "testdb"; // Créer un objet de connexion de la base de données $ db_connection = pg_connect ("host = $ host dbname = $ db user = $ user password = $ pass") ou mourir ("ne peut pas se connecter au serveur \ n"); $ filename = "fleur.png "; $ image = fopen ($ nom de fichier, 'r') ou mourir ("Impossible d'ouvrir le fichier."); $ data = fread ($ image, fileSize ($ nom de fichier)); $ cdata = pg_escape_bytea ($ data); fclose ($ image); // insérer les données d'image $ query = "Insérer dans TBL_BINALY_2 (Image_name, image_data) valeurs ('$ filename', '$ cdata')"; $ result = pg_query ($ db_connection, $ query); Si ($ résultat) écho "Les données d'image sont insérées avec succès." pg_close ($ db_connection); ?> |
La sortie suivante apparaîtra après avoir exécuté le script ci-dessus depuis le serveur local et le fichier image existant dans l'emplacement actuel:
Lisez les données d'image du tableau à l'aide de PHP:
Créer un fichier PHP nommé get_image.php avec le code suivant qui lira les données binaires d'un fichier image. Créez l'image à partir des données binaires et affichez l'image dans le navigateur.
1 2 3 4 5 6 7 8 9 dix 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 | // Afficher le réglage d'erreur ini_set ('display_errors', 1); error_reporting (e_all); $ host = "localhost"; $ user = "Postgres"; $ pass = "12345"; $ db = "testdb"; // Créer un objet de connexion de la base de données $ db_connection = pg_connect ("host = $ host dbname = $ db user = $ user password = $ pass") ou mourir ("ne peut pas se connecter au serveur \ n"); // Lire les données de l'image du tableau $ query = "SELECT Image_data FROM TBL_BINALY_2 WHERE ID = 1"; $ result = pg_query ($ db_connection, $ query) ou die (pg_last_error ($ db_connection)); $ data = pg_fetch_result ($ result, 'image_data'); $ cimage = pg_unescape_bytea ($ data); // Créer un fichier image avec les données d'image récupérées à partir du tableau $ filename = "myfile.jpg "; $ image = fopen ($ nom de fichier, 'wb') ou die ("Impossible d'ouvrir l'image."); FWrite ($ Image, $ cimage) ou Die ("Impossible d'écrire des données."); fclose ($ image); pg_close ($ db_connection); // Affiche l'image dans le navigateur écho ""; ?> |
L'image générée à partir des données d'image apparaîtra après avoir exécuté le script ci-dessus à partir du serveur local.
Conclusion:
Le but de l'utilisation de types de données binaires et des différentes utilisations des données binaires dans PostgreSQL a été montrée dans ce tutoriel qui aidera le nouvel utilisateur de PostgreSQL à travailler avec le type de données binaires.