Requisitos previos:
Debe instalar la última versión de los paquetes PostgreSQL en el sistema operativo Linux antes de ejecutar las declaraciones SQL que se muestran en este tutorial. Ejecute los siguientes comandos para instalar e iniciar el PostgreSQL:
1 2 3 | $ sudo apt-get -y instalación postgresql postgresql-contrib |
Ejecute el siguiente comando para iniciar sesión en PostgreSQL con permiso raíz:
1 | $ sudo -u postgres psql |
Bytea Hex Formato:
Los datos binarios están codificados como dos dígitos hexadecimales por byte en maleficio formato. La cadena binaria está precedida por la secuencia, \ x. Los dígitos hexadecimales pueden ser mayúsculas o minúsculas. Este formato es compatible con una amplia gama de aplicaciones externas.
Ejemplo:
1 | # Seleccione E '\\ XABC0110' como hex_format; |
Formato de escape de bytea:
El escapar El formato es el formato tradicional PostgreSQL. Se utiliza una secuencia de caracteres ASCII para representar los datos binarios en formato de escape. La cadena binaria se convierte en un valor octal de tres dígitos precedido por dos barras de retroceso.
Octetos escapares literal de Bytea:
Valor decimal | Descripción | Entrada escapada | Ejemplo | Producción |
---|---|---|---|---|
0 | Octeto cero | E '\\ 000' | Seleccione E '\\ 000' :: bytea; | \ x00 |
45 | Guión | '-' o e '\\ 055' | Seleccione E '\-' :: bytea; | \ x2d |
110 | 'norte' | 'N' o E '\\ 156' | Seleccione E '\ n' :: bytea; | \ x6e |
0 a 31 y 127 a 255 | Octetos no imprimibles | E '\\ xxx' (valor octal) | Seleccione E '\\ 001' :: bytea; | \ x01 |
Octets de salida de salida de bytea:
Valor decimal | Descripción | Salida escapada | Ejemplo | Producción |
---|---|---|---|---|
45 | Guión | - | Seleccione E '\\ 055' :: bytea; | - |
32 a 126 | Octetos imprimibles | Cualquier carácter imprimible | Seleccione E '\\ 156' :: bytea; | norte |
0 a 31 y 127 a 255 | Octetos no imprimibles | \ xxx (valor octal) | Seleccione E '\\ 001' :: bytea; | \ 001 |
Uso del tipo de datos binarios en PostgreSQL:
Antes de crear cualquier tabla con el tipo de datos booleanos, debe crear una base de datos PostgreSQL. Entonces, ejecute el siguiente comando para crear una base de datos llamada 'testdb':
1 | # Crear base de datos TestDB; |
La siguiente salida aparecerá después de crear la base de datos:
Ejemplo-1: cree una tabla con un tipo de datos binarios para almacenar el valor octal
Crear una tabla llamada 'tbl_binary_1'En la base de datos actual con dos campos. El primer nombre de campo es identificación cuál es la clave principal de la tabla. El valor de este campo se incrementará automáticamente cuando un nuevo registro se insertará. El segundo nombre de campo es datos binarios y el tipo de datos es Bytea.
1 2 3 4 | # Crear tabla tbl_binary_1 ( ID Clave primaria en serie, binary_data bytea); |
La siguiente salida aparecerá después de ejecutar la consulta anterior:
Ejecute la siguiente consulta de inserción que insertará dos valores octales en el tbl_binary_1 mesa:
1 2 3 4 5 | # Insertar en tbl_binary_1 (binary_data) VALORES (E '\\ 055'), (E '\\ 156'); |
La siguiente salida aparecerá después de ejecutar la consulta anterior:
Ejecute la siguiente consulta de selección que leerá todos los registros del tbl_binary_1 mesa:
1 | # Seleccionar * de tbl_binary_1; |
La siguiente salida aparecerá después de ejecutar la consulta anterior. La salida muestra el valor hexadecimal del valor octal.
Ejemplo-2: cree una tabla con un tipo de datos binarios para almacenar datos de imagen
Crear una tabla llamada 'tbl_binary_2'En la base de datos actual con tres campos. El primer nombre de campo es identificación cuál es la clave principal de la tabla y el valor de este campo se incrementará automáticamente cuando se insertará un nuevo registro. El segundo nombre de campo es Nombre de la imágen y el tipo de datos es Varchar (20). El nombre de la imagen se almacenará en este campo. El tercer nombre de campo es datos de imagen y el tipo de datos de este campo es Bytea. Los datos de la imagen se almacenarán en este campo.
1 2 3 4 5 | # Crear tabla tbl_binary_2 ( ID Clave primaria en serie, image_name varchar (20), image_data bytea); |
La siguiente salida aparecerá después de ejecutar la consulta anterior.
Inserte una imagen en la tabla usando PHP:
Crear un archivo PHP llamado insertar imagen.php con el siguiente código que leerá el contenido de un archivo de imagen. Luego, almacene la imagen en la tabla PostgreSQL después de convertirla en datos binarios.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 dieciséis 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 | // Mostrar configuración de error ini_set ('display_errors', 1); error_reporting (e_all); $ host = "localhost"; $ user = "Postgres"; $ pass = "12345"; $ db = "testdb"; // Crear objeto de conexión de base de datos $ db_connection = pg_connect ("host = $ host dbname = $ db user = $ user Password = $ pass") o morir ("no se pudo conectar al servidor \ n"); $ filename = "flor.png "; $ image = fopen ($ filename, 'r') o morir ("no se puede abrir el archivo."); $ data = fread ($ image, filesize ($ filename)); $ CDATA = PG_ESCAPE_BYTEA ($ data); fcLose ($ imagen); // inserta los datos de la imagen $ query = "Insertar en tbl_binary_2 (image_name, image_data) valores ('$ filename', '$ cdata')"; $ result = PG_Query ($ db_connection, $ QUERY); if ($ resultado) echo "Los datos de la imagen se insertan correctamente."; pg_close ($ db_connection); ?> |
La siguiente salida aparecerá después de ejecutar el script anterior desde el servidor local y el archivo de imagen existente en la ubicación actual:
Lea los datos de la imagen de la tabla usando PHP:
Crear un archivo PHP llamado obtener la imagen.php con el siguiente código que leerá los datos binarios de un archivo de imagen. Cree la imagen a partir de los datos binarios y muestre la imagen en el navegador.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 dieciséis 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 | // Mostrar configuración de error ini_set ('display_errors', 1); error_reporting (e_all); $ host = "localhost"; $ user = "Postgres"; $ pass = "12345"; $ db = "testdb"; // Crear objeto de conexión de base de datos $ db_connection = pg_connect ("host = $ host dbname = $ db user = $ user Password = $ pass") o morir ("no se pudo conectar al servidor \ n"); // Lea los datos de la imagen de la tabla $ query = "seleccione Image_Data de tbl_binary_2 donde id = 1"; $ result = PG_Query ($ db_connection, $ QUIERY) o DIE (PG_LAST_ERROR ($ db_connection)); $ data = pg_fetch_result ($ resultado, 'image_data'); $ CIMAGE = PG_UNESCAPE_BYTEA ($ data); // Crear un archivo de imagen con los datos de imagen recuperados de la tabla $ filename = "myfile.jpg "; $ image = fopen ($ nombre de archivo, 'wb') o morir ("no se puede abrir la imagen."); FWrite ($ Image, $ CIMAGE) o Die ("No se puede escribir datos."); fcLose ($ imagen); pg_close ($ db_connection); // Muestra la imagen en el navegador eco ""; ?> |
La imagen generada a partir de los datos de la imagen aparecerá después de ejecutar el script anterior desde el servidor local.
Conclusión:
En este tutorial se ha mostrado el propósito de utilizar los tipos de datos binarios y los diferentes usos de los datos binarios en PostgreSQL que ayudará al nuevo usuario de PostgreSQL a trabajar con el tipo de datos binarios.