Background

A quick-hacked-together Python script to turn mysqldump files to CSV files. Wikipedia データベース ダンプ用に最適化。

非常に大きな MySQL ダンプは、かなり限られたハードウェアではインポートが困難または不可能な場合があります。 MySQL ダンプの厄介な点は、それを操作する唯一の実用的な方法が MySQL を介して行われることであり、Wikipedia MySQL ダンプのような大きなダンプを扱うには、本質的にハードウェアのアップグレードが必要なのです。 この短い Python スクリプトは、MySQL INSERT ステートメントの構造が CSV とあまり変わらないという事実を利用し、Python CSV パーサーを使用して(テキストの整理の前後に) MySQL ダンプ ファイルを CSV ファイルに変更します。 複数のSQLファイルを指定することができ、それらはすべて1つのCSVファイルに連結されます。 このスクリプトは標準入力から SQL ファイルを取り込むこともでき、MySQL ダンプを解凍せずに gzip で圧縮したものを CSV ファイルに変換するのに便利です。

zcat dumpfile.sql.gz | python mysqldump_to_csv.py

How It Works

次の SQL:

INSERT INTO `page` VALUES (1,0,'April','',1,0,0,0.778582929065,'20140312223924','20140312223929',4657771,20236,0),(2,0,'August','',0,0,0,0.123830928525,'20140312221818','20140312221822',4360163,11466,0);

は次の CSV:

1,0,April,1,0,0,0.778582929065,20140312223924,20140312223929,4657771,20236,02,0,August,0,0,0,0.123830928525,20140312221818,20140312221822,4360163,11466,0

に変換されます。何が行われているかを見ることはそれほど難しくありませんが、ソースコードを見て変換が正確に行われることを確認することは間違いありません。

Todo

  • A rigorous series of unit tests, proving that this works on a diverse set of MySQL dump files without any side effects
  • Some more documentation
  • A solution to a bug where one column is a string ending in ) and the next column is a string starting in (.The string is a pasting in
  • Some additional documentation
  • A solution to a bug is putting it. 現在のプログラムロジックでは、括弧が取り除かれるようです。