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