2009-06-26 4 views
0

J'ai une table avec quelques milliers de lignes qui ont quelques colonnes entières et une colonne blob. Je veux vider chaque ligne en tant que son propre fichier avec le blob étant le contenu et les entiers étant utilisés pour former le nom de fichier. Ceci est une opération une fois si rapide et sale est OK. Une contrainte est que je n'ai presque aucun outil installé dans cet environnement, de sorte que cela fera partie du coût de développement, peu importe ce que j'utilise.Déposer des lignes de blob dans des fichiers de MySQL


Edit: Je fini par utiliser C# d'une autre boîte. Il a seulement fallu télécharger a single assembly et environ la même quantité de code que celle donnée dans les réponses ci-dessous.

+0

De quel type d'environnement s'agit-il, en particulier le système d'exploitation/la distribution? – Svante

+0

J'ai WinXP et Linux via SSH disponible – BCS

Répondre

1

Quelque chose rapide en PHP:

<?php 
$connection = mysql_connect("mysqlserver.example.com", "username", "password"); 
mysql_select_db("dbname"); 
$sql = "SELECT `blob_column`, `id` FROM `mytable`"; 
$result = mysql_query($sql); 
while ($row = mysql_fetch_assoc($result)){ 
    file_put_contents("file" + $row["id"] + ".dat", $row["blob_column"]); 
} 
mysql_close($connection); 

Vous pourriez probablement faire quelque chose simular avec la méthode que vous devez accéder à MySQL, mais autant que je sache, il n'y a aucun moyen de le faire avec SQL pur.

+0

agréable et simple +1, à quel point est-il difficile d'installer PHP et de configurer le support de MySQL pour cela? – BCS

+0

@BCS: La plupart des serveurs (en particulier UNIX) sont livrés avec PHP déjà installé. Si vous avez un accès SSH/telnet, vous pouvez taper php -v à l'invite de commande pour savoir s'il est disponible. PHP devrait aussi avoir été compilé avec le support de MySQL. Si vous ne l'avez pas, vous pouvez installer un paquet comme Apache Friends XAMPP, mais cela peut être trop gonflé pour votre usage (il est livré avec Apache, MySQL, PHPMyAdmin, et une tonne d'autres choses aussi). – MiffTheFox

+0

Oh, et encore une chose, vous devrez également vous connecter à votre base de données, je vais ajouter ce code ici aussi. – MiffTheFox

1

En Common Lisp, en utilisant CLSQL, quelque chose comme ce qui suit devrait fonctionner (non testé, ne pas MySQL installé pour le moment):

(require 'clsql) 
(require 'clsql-mysql) 

(clsql:connect (host db user password port) :database-type :mysql) 

(clsql:do-query ((col1 col2 blob) "select col1,col2,blob from blobtable") 
    (with-open-file (outfile (format nil "~a-~a" col1 col2) 
          :direction :output 
          :element-type 'byte) 
    (write-sequence blob outfile))) 

vous devez remplir hôte, db etc. (le port est facultatif), et ajuste la requête, bien sûr.

+0

ditto comment to MiffTheFox – BCS

Questions connexes