Pré-requisitos:
Você deve instalar a versão mais recente dos pacotes PostGresql no sistema operacional Linux antes de executar as instruções SQL mostradas neste tutorial. Execute os seguintes comandos para instalar e iniciar o PostgreSQL:
1 2 3 | $ sudo apt-get -y install postgresql postgresql-contra |
Execute o seguinte comando para fazer login no PostgreSQL com permissão de raiz:
1 | $ sudo -u postgres psql |
Bytea Hex Formato:
Os dados binários são codificados como dois dígitos hexadecimais por byte em hexadecimal formatar. A sequência binária é precedida pela sequência, \ x. Os dígitos hexadecimais podem ser maiúsculos ou minúsculos. Este formato é suportado por uma ampla gama de aplicações externas.
Exemplo:
1 | # Selecione e '\\ xabc0110' como hex_format; |
Bytea Escape Format:
O escapar Formato é o formato tradicional PostgreSQL. Uma sequência de caracteres ASCII é usada para representar os dados binários em formato de escape. A corda binária é convertida em um valor octal de três dígitos precedido por duas barras de barriga.
Bytea Literal escapou Octetos:
Valor decimal | Descrição | Entrada escapada | Exemplo | Saída |
---|---|---|---|---|
0 | Zero octeto | E '\\ 000' | Selecione e '\\ 000' :: bytea; | \ x00 |
45 | Hífen | '-' ou e '\\ 055' | Selecione e '\-' :: bytea; | \ x2d |
110 | 'n' | 'n' ou e '\\ 156' | Selecione e '\ n' :: bytea; | \ x6e |
0 a 31 e 127 a 255 | Octetos não impressos | E '\\ xxx' (valor octal) | Selecione e '\\ 001' :: bytea; | \ x01 |
Saída de bytea escapou octetos:
Valor decimal | Descrição | Saída escapada | Exemplo | Saída |
---|---|---|---|---|
45 | Hífen | - | Selecione e '\\ 055' :: bytea; | - |
32 a 126 | Octetos imprimíveis | Qualquer caractere imprimível | Selecione e '\\ 156' :: bytea; | n |
0 a 31 e 127 a 255 | Octetos não impressos | \ xxx (valor octal) | Selecione e '\\ 001' :: bytea; | \ 001 |
Uso do tipo de dados binário no PostgreSQL:
Antes de criar qualquer tabela com o tipo de dados booleano, você deve criar um banco de dados PostGresql. Então, execute o seguinte comando para criar um banco de dados chamado 'testdb':
1 | # Criar banco de dados TestDB; |
A saída a seguir será exibida após a criação do banco de dados:
Exemplo 1: Crie uma tabela com um tipo de dados binário para armazenar o valor octal
Crie uma tabela chamada 'tbl_binary_1'No banco de dados atual com dois campos. O primeiro nome de campo é eu ia qual é a chave primária da tabela. O valor desse campo será incrementado automaticamente quando um novo registro será inserido. O segundo nome de campo é binário_data e o tipo de dados é Bytea.
1 2 3 4 | # Criar tabela tbl_binary_1 ( Id Id Serial Primary Key, binário_data bytea); |
A saída a seguir aparecerá após a execução da consulta acima:
Execute a seguinte consulta de inserção que insira dois valores octais no tbl_binary_1 mesa:
1 2 3 4 5 | # Inserir em tbl_binary_1 (binário_data) Valores (E '\\ 055'), (E '\\ 156'); |
A saída a seguir aparecerá após a execução da consulta acima:
Execute a seguinte consulta selecionada que lerá todos os registros do tbl_binary_1 mesa:
1 | # Selecione * de tbl_binary_1; |
A saída a seguir aparecerá após a execução da consulta acima. A saída mostra o valor hexadecimal do valor octal.
Exemplo 2: Crie uma tabela com um tipo de dados binário para armazenar dados de imagem
Crie uma tabela chamada 'tbl_binary_2'No banco de dados atual com três campos. O primeiro nome de campo é eu ia que é a chave primária da tabela e o valor desse campo será incrementado automaticamente quando um novo registro será inserido. O segundo nome de campo é image_name e o tipo de dados é Varchar (20). O nome da imagem será armazenado neste campo. O terceiro nome de campo é image_data e o tipo de dados deste campo é Bytea. Os dados da imagem serão armazenados neste campo.
1 2 3 4 5 | # Criar tabela tbl_binary_2 ( Id Id Serial Primary Key, image_name varchar (20), image_data bytea); |
A saída a seguir aparecerá após a execução da consulta acima.
Insira uma imagem na tabela usando PHP:
Crie um arquivo php nomeado Inserir Imagem.php com o código a seguir que lerá o conteúdo de um arquivo de imagem. Em seguida, armazene a imagem na tabela PostGresql depois de convertê -la em dados binários.
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 | // Configuração de erro de exibição ini_set ('display_errors', 1); error_reporting (e_all); $ host = "localhost"; $ user = "PostGres"; $ pass = "12345"; $ db = "testdb"; // Crie objeto de conexão de banco de dados $ db_connection = pg_connect ("host = $ host dbname = $ db user = $ user senha = $ pass") ou morrer ("não foi possível se conectar ao servidor \ n"); $ filename = "Flor.png "; $ imagem = fopen ($ filename, 'r') ou die ("Não é possível abrir o arquivo."); $ data = fread ($ imagem, arquivo file ($ filename)); $ cdata = pg_escape_bytea ($ dados); fclose ($ imagem); // Insira os dados da imagem $ query = "inserir em tbl_binary_2 (image_name, image_data) valores ('$ filename', '$ cdata')"; $ resultado = pg_query ($ db_connection, $ query); Se ($ resultado) eco "os dados da imagem forem inseridos com sucesso."; pg_close ($ db_connection); ?> |
A saída a seguir será exibida após a execução do script acima do servidor local e do arquivo de imagem existente no local atual:
Leia os dados da imagem da tabela usando PHP:
Crie um arquivo php nomeado get_image.php com o código a seguir que lerá os dados binários de um arquivo de imagem. Crie a imagem dos dados binários e exiba a imagem no navegador.
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 | // Configuração de erro de exibição ini_set ('display_errors', 1); error_reporting (e_all); $ host = "localhost"; $ user = "PostGres"; $ pass = "12345"; $ db = "testdb"; // Crie objeto de conexão de banco de dados $ db_connection = pg_connect ("host = $ host dbname = $ db user = $ user senha = $ pass") ou morrer ("não foi possível se conectar ao servidor \ n"); // Leia os dados da imagem da tabela $ query = "Selecione Image_Data em tbl_binary_2 onde id = 1"; $ resultado = pg_query ($ db_connection, $ query) ou die (pg_last_error ($ db_connection)); $ data = pg_fetch_result ($ resultado, 'image_data'); $ cimage = pg_unescape_bytea ($ dados); // Crie um arquivo de imagem com os dados da imagem recuperados da tabela $ filename = "myfile.jpg "; $ imagem = fopen ($ filename, 'wb') ou die ("Não é possível abrir a imagem."); fwrite ($ imagem, $ cimage) ou matriz ("Não é possível escrever dados."); fclose ($ imagem); pg_close ($ db_connection); // exibe a imagem no navegador eco ""; ?> |
A imagem gerada dos dados da imagem aparecerá após a execução do script acima do servidor local.
Conclusão:
O objetivo de usar tipos de dados binários e diferentes usos de dados binários no PostgreSQL foi mostrado neste tutorial que ajudará o novo usuário do PostgreSQL a trabalhar com o tipo de dados binário.