У меня есть таблица с несколькими тысячами строк, в которой есть несколько целых столбцов и столбец blob. Я хочу сбросить каждую строку как свой собственный файл, а blob - это содержимое и целые числа, используемые для формирования имени файла. Это одно время, так быстро и грязно. Одно из ограничений заключается в том, что у меня почти нет инструментов, установленных в этой среде, так что это будет часть стоимости dev независимо от того, что я использую.
Изменить: я закончил использование С# из другого поля. Только загрузка единственной сборки и примерно столько же кода, как указано в ответах ниже.
Что-то быстрое в 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);
Возможно, вы могли бы что-то сделать с помощью любого метода, с которым вам приходилось обращаться к MySQL, но AFAIK, нет способа сделать это с помощью чистого SQL.
В Common Lisp, используя CLSQL, что-то вроде следующего должно работать (непроверено, на данный момент MySQL не установлен):
(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)))
Вам нужно будет заполнить хост, db и т.д. (порт не является обязательным) и, конечно, настроить запрос.