Php 将6k图像从Access迁移到MySQL的最佳方法?

Php 将6k图像从Access迁移到MySQL的最佳方法?,php,mysql,perl,csv,Php,Mysql,Perl,Csv,我不介意向任何帮助我解决这个问题的人捐款 我应该用BLOB数据类型存储二进制信息吗?我应该存储包含路径的VARCHAR吗?我现在不知道怎么做这两件事。图像当前作为OLE对象嵌入到Access数据库中。此迁移不能是手动的;它必须使用脚本或程序自动完成,因为大约有6k条记录 有什么想法或建议吗?您可以使用Leban's一次导出所有图像。您可以指定一个“命名”列,例如主键,以及要附加/前置到命名列的常量字段 然后,您的图片被称为“exported1.jpg”、“exported2.jpg”。。。假设您

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

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

有什么想法或建议吗?

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

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


仅用4000张小(约150KB)图片进行了测试,在有限的虚拟机上只需2分钟即可完成。所以6000应该不是问题。

我的看法是:将文件的路径保存在数据库中,并将文件保存在文件系统中。@cularis所说的效率要高得多。否则,您将扫描这些大斑点的所有数据…在数据库中存储许多图像是不好的。除了性能问题,当数据库增长到数百万个图像时会发生什么?使用对文件系统的引用(如加零的64位索引)来表示物理文件名并从中派生位置,例如preg_match(“/(…)(…)(…)/”,$index,$m)。匹配值$m[1]/$m[2]/$m[3]。jpg获取目录树中的路径/文件:imageroot/123/456/7890123456789。jpg您可以调整拆分,并装载新设备以使用多个文件系统进行增长。每天备份一个满是图像的数据库是非常浪费的。