【发布时间】:2010-12-25 09:08:31
【问题描述】:
我有一种情况,我必须在共享托管服务提供商上更新网站。该网站有一个CMS。使用 FTP 上传 CMS 的文件非常简单。
我还必须导入一个大的(相对于 PHP 脚本的范围)数据库文件(大约 2-3 MB 未压缩)。 Mysql 已关闭,无法从外部访问,所以我必须使用 FTP 上传文件,然后启动 PHP 脚本来导入它。遗憾的是,我无法访问mysql 命令行函数,因此我必须使用本机 PHP 对其进行解析和查询。我也不能使用 LOAD DATA INFILE。我也不能使用任何类型的交互式前端,如 phpMyAdmin,它需要以自动化方式运行。我也不能用mysqli_multi_query()。
是否有人知道或有一个已经编码的简单解决方案,该解决方案可靠将此类文件拆分为单个查询(可能有多行语句)并运行查询。我想避免自己开始摆弄它,因为我可能会遇到很多问题(如何检测字段分隔符是否是数据的一部分;如何处理备忘录字段中的换行符;等等在)。 必须为此提供现成的解决方案。
【问题讨论】:
-
另外,能否提供一些测试数据?
-
为所有出色的输入干杯。在赏金用完之前,我需要给自己找时间去检查它们并测试它们。 :)
-
现在提供测试数据很困难,但总的来说,它是各种各样的表,有各种各样的脏东西(大量的换行符、HTML 代码、二进制数据等等)。
-
还有一件事,我看到有一些建议可以将数据放入预解析的格式,而不是原始的 mySQL 查询。虽然这可能是有道理的,但我很犹豫是否要朝那个方向发展,因为输出端已经使用
mysqldump很好地设置了。将转储文件拆分为单个查询的解决方案目前对我来说是最有希望的。 -
顺便说一句,2-3MB 的数据库文件绝不是大。大型数据库通常在 GB 甚至 TB 的范围内。