【问题标题】:Dumping blob rows to files from MySQL将 blob 行从 MySQL 转储到文件
【发布时间】:2010-11-06 06:55:38
【问题描述】:

我有一个包含几千行的表,其中包含几个整数列和一个 blob 列。我想将每一行作为自己的文件转储,其中 blob 是内容,整数用于形成文件名。这是一次性操作,如此快速和肮脏是可以的。一个限制是我在这个环境中几乎没有安装任何工具,因此无论我使用什么,这将成为开发成本的一部分。


编辑:我最终从另一个盒子中使用了 C#。只需要下载a single assembly 和与以下答案中给出的代码量大致相同的代码。

【问题讨论】:

  • 那是什么样的环境,尤其是操作系统/发行版?
  • 我有 WinXP 和 Linux 通过 SSH avalable

标签: mysql flat-file


【解决方案1】:

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 来做。

【讨论】:

  • 漂亮又简单的 +1,安装 PHP 并为它设置 MySQL 支持有多难?
  • @BCS:大多数服务器(尤其是 UNIX)都已经安装了 PHP。如果您有 SSH/telnet 访问权限,则可以在命令提示符处键入 php -v 以查看它是否可用。 PHP 也应该在 MySQL 支持下编译。如果你没有它,你可以安装一个像 Apache Friends XAMPP 这样的包,但这对于你的使用来说可能太臃肿了(它还附带了 Apache、MySQL、PHPMyAdmin 和大量其他东西)。
  • 哦,还有一件事,您还需要连接到您的数据库,我也将在此处添加该代码。
  • "-bash: php: command not found" 我拥有这个盒子并且没有安装太多我不需要的东西
【解决方案2】:

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

当然,您必须填写主机、数据库等(端口是可选的),并调整查询。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-03
    • 2015-09-05
    • 2021-07-29
    • 2017-08-18
    • 2021-11-22
    • 2021-03-07
    • 2020-07-05
    • 2020-06-17
    相关资源
    最近更新 更多