Como Faz, Dicas, Geek/Nerd, etc.

Fazendo Insert de BLOB com Perl no MySQL

Este exemplo que colocarei aqui foi algo que procurei bastante na internet para um script que eu estava fazendo e não achei nanhuma informação de credibilidade sobre o assunto, achei estranho, ao final acabei fazendo do jeito mais obvio, e na minha cabeça o mais improvável, e não é que deu certo! E já que funcionou tão bem, vou dividir mais este com a galera.

Antes de Começar:

Certifique-se que você tenha conexão com uma base de dados que contenha campos do tipo BLOB. Caso não tenha uma tabela com BLOB ai vai um exemplo:

CREATE TABLE `user` (
`user_id` int(5) unsigned NOT NULL auto_increment,
`user_name` varchar(255) character set latin1 collate latin1_bin NOT NULL default ”,
`user_password` tinyblob NOT NULL,
`user_email` tinytext NOT NULL,
`user_options` blob NOT NULL,
PRIMARY KEY (`user_id`),
UNIQUE KEY `user_name` (`user_name`),
KEY `user_email_token` (`user_email_token`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=30 ;

No exemplo acima definimos o “user_options” como uma série de configurações padrão para criação de um novo usuário que serão lidas por uma aplicação que fará o acesso ao banco através de um arquivo .txt , chamaremos este arquivo de template.txt.

Abaixo vai o código comentado:

#!/usr/bin/perl

#[ Use estes dois aqui sempre, esta lah no livro de boas praticas ]
use warnings;
use strict;
#[ Este aqui eh usado para acessar o banco ]
use DBI;

#[ Outras variaveis ]
my $login = “usertest”;
my $email = “usertest@email.com”;

#[ Variavel que ira receber o arquivo inicialmente zerada ]
my $options = “”;

#[ Abrimos o arquivo e armazenamos em uma variavel ]
open(FILE, “template.txt”) or die “File cannot be read”;
read(FILE, $options, 1153);
close(FILE);

#[ Conecta no banco ]
my $dbh = DBI->connect(“DBI:mysql:nome da tabela“, ‘usuario‘, ‘senha‘) or die “Impossivel conectar no Servidor: $DBI::errstr”;

#[ Inserindo os dados ]
$query = “INSERT INTO nome da tabela.user (user_name,user_email,user_options) VALUES (?, ?, ?, ?)”;
$insert = $dbh->prepare_cached($query);
$insert->execute($login, $email, $options) or die “Impossivel conectar no Servidor: $DBI::errstr”;
print “Usuario $login adicionado com sucesso!\n”;

#[ Desconecta do Banco ]
$dbh->disconnect;

Conciderações finais

Lembre-se que o Perl irá procurar o arquivo no mesmo diretório onde o script se encontra, caso o script e o arquivo a ser carregado estejam em diretórios diferentes altere a linha “open” com o caminho completo do arquivo.

O número que existe na linha read(FILE, $options, 1153);significa o tamanho do arquivo em kbites.

Para saber mais

Documentação Oficial do MySQL sobre BLOB
Documentação Oficial do Perl DBI

Related Posts Plugin for WordPress, Blogger...