Estou tentando despejar um banco de dados cuja uma de suas tabelas possui um campo BLOB.
Eu tentei SQL Developer e toad, mas nenhum deles foi capaz de gerar "insert into" incluindo os dados binários como um PHPMyAdmin, por exemplo.
Existe alguma maneira ou ferramenta para fazer isso?
Desde já, obrigado !
Ao exportar uma tabela que contém uma coluna CLOB para um script SQL, encontramos vários problemas:
O artigo Ask TOM Exportando uma tabela que contém uma coluna CLOB de 2017 contém uma solução, usando o recurso que colocar o comentário
/*insert*/
no script fará com que o SQL Developer crie instruções INSERT.O código a seguir criará uma tabela com um CLOB e exportará para o arquivo
ins.sql
:A execução do arquivo
ins.sql
ficará assim:(Não estou usando Oracle, não posso testar este código.)
MySQL WorkBench / mysqldump tem uma opção --hexblob que pode ajudar aqui.
https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html#option_mysqldump_hex-blob
Uma maneira de fazer isso é exportar cada blob individual para um arquivo de dados e, em seguida, usar o sql loader ou uma ferramenta semelhante para carregar os arquivos individuais. Você precisaria escrever um script sql personalizado para exportar os dados, mas a importação seria bastante direta.
No sql loader, o arquivo de controle teria um conteúdo mais ou menos assim: OPTIONS (skip=1) LOAD DATA CHARACTERSET 'WE8ISO8859P15' INFILE 'images.txt' APPEND INTO TABLE IMAGES FIELDS TERMINATED BY '\t' TRAILING NULLCOLS ( NAME, lob_file_data FILLER , DATA LOBFILE(lob_file_data) TERMINADO POR EOF )
No oracle, o datapump exportará blobs, mas estou assumindo que, por algum motivo, o datapump não é uma opção.