Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP从MediaWiki数据库中提取压缩文本_Php_Mysql_Zip_Blob_Mediawiki - Fatal编程技术网

使用PHP从MediaWiki数据库中提取压缩文本

使用PHP从MediaWiki数据库中提取压缩文本,php,mysql,zip,blob,mediawiki,Php,Mysql,Zip,Blob,Mediawiki,我们的一位客户希望获得他们运行了一段时间的wiki站点的所有内容。他们为我们提供了“mediawiki”软件的完整数据库。我们正在尝试使用php从“文本”表中提取文章,而不使用MediaWiki引擎 MediaWiki似乎先压缩内容,然后再将其作为BLOB放入数据库。我们找不到一种没有引擎的方法来提取它。我查看了源代码,但无法重现它们提取BLOB的方式 有什么建议可以解决这个问题吗?只是一个猜测,但可以这样尝试: SELECT UNCOMPRESS(blobname) 顺便说一句,我没有使用M

我们的一位客户希望获得他们运行了一段时间的wiki站点的所有内容。他们为我们提供了“mediawiki”软件的完整数据库。我们正在尝试使用php从“文本”表中提取文章,而不使用MediaWiki引擎

MediaWiki似乎先压缩内容,然后再将其作为BLOB放入数据库。我们找不到一种没有引擎的方法来提取它。我查看了源代码,但无法重现它们提取BLOB的方式


有什么建议可以解决这个问题吗?

只是一个猜测,但可以这样尝试:

SELECT UNCOMPRESS(blobname)
顺便说一句,我没有使用MediaWiki的经验,但我希望能让您朝着正确的方向前进

查看MySQL压缩方法的更多信息。

来自:

旧国旗 以逗号分隔的标志列表。包含以下可能的值:

┌──────────┬──────────────────────────────────────────────────────────────────┐ │ gzip │ Text is compressed with PHP's gzdeflate() function. │ │ │ Note: If the $wgCompressRevisions option is on, new rows │ │ │ (=current revisions) will be gzipped transparently at save time. │ │ │ Previous revisions can also be compressed by using the script │ │ │ compressOld.php │ ├──────────┼──────────────────────────────────────────────────────────────────┤ │ utf-8 │ Text was stored as UTF-8. │ │ │ Note: If the $wgLegacyEncoding option is on, rows *without* this │ │ │ flag will be converted to UTF-8 transparently at load time. │ ├──────────┼──────────────────────────────────────────────────────────────────┤ │ object │ Text field contained a serialized PHP object. │ │ │ Note: The object either contains multiple versions compressed │ │ │ together to achieve a better compression ratio, or it refers to │ │ │ another row where the text can be found. │ ├──────────┼──────────────────────────────────────────────────────────────────┤ │ external │ Text was stored in an external location specified by old_text │ └──────────┴──────────────────────────────────────────────────────────────────┘ ┌──────────┬──────────────────────────────────────────────────────────────────┐ │ gzip│ 使用PHP的gzdeflate()函数压缩文本。│ │ │ 注意:如果启用了$wgCompressRevisions选项,则会显示新行│ │ │ (=当前版本)将在节省时间时透明地压缩。│ │ │ 也可以使用脚本压缩以前的修订│ │ │ compressOld.php│ ├──────────┼──────────────────────────────────────────────────────────────────┤ │ utf-8│ 文本存储为UTF-8。│ │ │ 注意:如果启用了$wgLegacyEncoding选项,则行*不带*此选项│ │ │ 标志将在加载时透明地转换为UTF-8。│ ├──────────┼──────────────────────────────────────────────────────────────────┤ │ 对象│ 文本字段包含序列化的PHP对象。│ │ │ 注意:该对象包含多个压缩版本│ │ │ 共同达到更好的压缩比,还是指│ │ │ 可以找到文本的另一行。│ ├──────────┼──────────────────────────────────────────────────────────────────┤ │ 外部的│ 文本存储在旧文本指定的外部位置│ └──────────┴──────────────────────────────────────────────────────────────────┘

用Old_flags=“gzip”标记的旧条目使用zlib的deflate算法压缩它们的旧文本,没有头字节。PHP的gzinflate()将明确接受此文本;在Perl etc中,将窗口大小设置为-MAX_WSIZE以禁用头字节


根据文档,应该很简单,只需将blob数据输入php的
gzinflate()

mediawiki是用php编写的。您可以随时翻阅代码以找到检索/解压缩逻辑。为什么不安装mediawiki并导入数据库?从那里你可以导出到一个更可读的方式。我认为猜测应该在评论中发布。