Comment faire un dump d'un fichier stocké dans une base de données sqlite comme un blob?
J'ai une base de données sqlite3. Une colonne a le type de TEXTE, et contient des gouttes que je voudrais enregistrer en tant que fichier. Ceux sont les fichiers gzip.
La sortie de la commande sqlite3 db.sqlite3 ".dump"
est:
INSERT INTO "data" VALUES(1,'objects','object0.gz',X'1F8B080000000000000 [.. a few thousands of hexadecimal characters ..] F3F5EF')
Comment puis-je extraire les données binaires à partir du fichier sqlite dans un fichier en utilisant la ligne de commande ?
- Ce type de ligne de commande?
- Je veux dire par l'exécution de sqlite3 dans un terminal.
Vous devez vous connecter pour publier un commentaire.
sqlite3
ne peut pas extraire de données binaires directement, de sorte que vous avez à convertir les données à convertir, utilisercut
pour extraire les chiffres hexadécimaux de la goutte littéral, et l'utilisationxxd
(une partie de lavim
package) pour convertir le convertir de retour en binaire:Avec SQLite 3.8.6 ou plus tard, le shell de ligne de commande comprend le
fileio
extension, qui met en œuvre lawritefile
function:J'ai dû faire quelques modifications mineures sur CL's réponse, afin de le faire fonctionner pour moi:
La structure de la commande qu'il utilise n'ont pas le nom de base de données, la syntaxe que j'utilise est quelque chose comme:
La manière dont il est l'aide de l'
cut
commande ne fonctionne pas sur ma machine. La bonne façon pour moi, c'est:Donc la dernière commande serait quelque chose comme:
Et dans mon cas:
xxd
pourrait faire face à la convertir à la fois avec des guillemets ou sans guillemetsDans mon cas, j'utilise "hex" au lieu de "citer" pour récupérer l'image à partir de la base de données, et pas besoin de "couper" dans la commande de la pipe. Par exemple: