【问题标题】:Best way to migrate 6k images from Access into MySQL?将 6k 图像从 Access 迁移到 MySQL 的最佳方法?
【发布时间】:2011-10-17 14:36:05
【问题描述】:

我不介意向任何帮助我解决这个问题的人捐款。

我应该使用 BLOB 数据类型存储二进制信息吗?我应该存储包含路径的 VARCHAR 吗?我目前不知道如何自动执行这些操作。这些图像当前作为 OLE 对象嵌入到 Access 数据库中。这种迁移不能是手动的;它必须使用脚本或程序自动完成,因为大约有 6k 条记录。

有什么想法或建议吗?

【问题讨论】:

  • 我对此的看法:保存数据库中文件的路径和文件系统中的文件。
  • @cularis 所说的更有效。否则你最终会扫描这些大斑点的所有数据......

标签: php mysql perl csv


【解决方案1】:

您可以使用 Leban 的 OLEtoDisk 一次性导出所有图像。您可以指定一个“命名”列,例如您的主键,以及要附加/附加到命名列的常量字段。

然后您的图片将被称为“exported1.jpg”、“exported2.jpg”、...假设您选择在导出前加上 id 的位置 1 和 2。将文件移动到服务器并写入应该很简单将正确路径插入 MySQL 数据库的脚本。假设这是一次性的事情,因为听起来就是这样。

刚刚用 4000 张小 (~150 kb) 图片对其进行了测试,它在有限的虚拟机上在 2 分钟内完成。所以6000应该不是问题。

【讨论】:

  • 在数据库中存储许多图像是不好的。除了性能问题,当数据库增长到数百万张图像时会发生什么?使用对文件系统的引用(例如零填充的 64 位索引)来表示物理文件名并从中派生位置,例如。 preg_match("/(...)(...)(.................)/", $index, $m).匹配值 $m[1]/$m[2]/$m[3].jpg 获取目录树中的路径/文件: imageroot/123/456/7890123456789.jpg 您可以调整拆分,并将新设备挂载到使用多个文件系统进行增长。每天备份一个充满图像的数据库真的很浪费。
猜你喜欢
  • 2019-08-20
  • 2011-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-06
  • 2011-05-09
  • 1970-01-01
相关资源
最近更新 更多