Сброс строк BLOB-объектов в файлы из MySQL - PullRequest
0 голосов
/ 27 июня 2009

У меня есть таблица с несколькими тысячами строк, в которой есть несколько целочисленных столбцов и столбец BLOB-объектов. Я хочу вывести каждую строку в виде отдельного файла, где BLOB-объект является содержимым, а целые числа используются для формирования имени файла. Это однократная операция, такая быстрая и грязная. Одним из ограничений является то, что у меня почти нет инструментов, установленных в этой среде, так что это будет частью стоимости разработки, независимо от того, что я использую.


Редактировать: В итоге я использовал C # из другого окна. Потребовалось только загрузить одну сборку и примерно столько же кода, сколько указано в ответах ниже.

Ответы [ 2 ]

1 голос
/ 27 июня 2009

В 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)))

Вы должны будете указать хост, дб и т. Д. (Порт указывать не обязательно) и, конечно, настроить запрос.

1 голос
/ 27 июня 2009

Что-то быстрое в 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.

...