4

私たちのクライアントは、しばらくの間運営していたウィキ サイトのすべてのコンテンツを取得したいと考えています。彼らは、「mediawiki」ソフトウェアの完全なデータベースを提供してくれました。MediaWiki エンジンを使用せずに、php を使用して「テキスト」テーブルから記事を抽出しようとしています。

MediaWiki は、コンテンツを BLOB としてデータベースに入れる前に圧縮しているようです。エンジンなしでそれを抽出する方法を見つけることができません。ソース コードを見ましたが、BLOB を抽出する方法を再現できません。

これを解決する方法はありますか?

4

3 に答える 3

2

テキストテーブルから:

old_flags 

フラグのカンマ区切りリスト。次の可能な値が含まれます。

┌──────────┬────────────────────────────────────── ────────────────────────────┐
│ gzip │ テキストは PHP の gzdeflate() 関数で圧縮されます。│
│ │注意: $wgCompressRevisions オプションがオンの場合、新しい行 │
│ │ (=現在のリビジョン) は、保存時に透過的に gzip されます。│
│ │ スクリプトを使用して以前のリビジョンも圧縮できます │
│ │ compressOld.php │
├──────────┼────────────────────────────────────── ────────────────────────────┤
│ utf-8 │ テキストは UTF-8 として保存されました。│
│ │注: $wgLegacyEncoding オプションがオンの場合、行はこれを*含まない* │
│ │ フラグはロード時に透過的に UTF-8 に変換されます。│
├──────────┼────────────────────────────────────── ────────────────────────────┤
│ オブジェクト │ テキスト フィールドには、シリアライズされた PHP オブジェクトが含まれていました。│
│ │注:オブジェクトには、圧縮された複数のバージョンが含まれています │
│ │ より良い圧縮率を達成するために一緒に、またはそれを参照します │
│ │ テキストが見つかる別の行。│
├──────────┼────────────────────────────────────── ────────────────────────────┤
│ 外部 │ テキストは old_text で指定された外部の場所に保存されました │
└──────────┴────────────────────────────────────── ────────────────────────────┘
于 2012-11-26T20:15:11.643 に答える
-2

あくまでも推測ですが、以下のようにしてみてください。

SELECT UNCOMPRESS(blobname)

ところで、私は MediaWiki の経験はありませんが、あなたが正しい方向に進むことを願っています。

MySQL の圧縮方法の詳細については、このページをご覧ください。

于 2012-11-26T20:09:42.750 に答える