linuxで大きなファイルを保存するときは「splitコマンド」で分割するらしい。
今回使うデータベースファイル(.sql)もそうしてあった。。
保存してあったDVDディスクに以前のプログラマさんが小さく「split」と書いておいてくれたのだ。最初は意味がわからなかったが、調べているうちにLinuxコマンドと知る。
こんなファイルがいくつもあるのだ、知らなければ手の出しようがない。
- images.sql.aa
- images.sql.ab
- images.sql.ac
- images.sql.ad
- images.sql.ae
- images.sql.af
- ・
- ・
- ・
- ・
- images.sql.az
連番になっているようなので順番に結合すればよいとわかった。結合後は.sqlという拡張子で保存しなおせばよいこともわかった。なんとなくではあるが。
しかし、今回はローカルPC(自分のPC(Windows XP))内で作業がしたい。何せ15GBあるのだ、しかも初挑戦なことばかりをやろうとしているのだ。私のPCにはLinuxの環境はない。
ファイルが結合できればいいのだ。上記のファイルは拡張子こそ変な連番だが中身はsqlファイルを分割したものだ。テキストエディタで開けるのです。試しに開いてみる。。
重い。。なかなか読み込めない。1つ512MBもあるテキストファイルなのだ。それが30個もある。しかもバイナリデータが格納されているので、1行分のデータが押し返して何百行、いや何千行にもおよんでいる。
こんなの手動でコピーペーストやったら大変です。改行箇所や、貼り付け箇所をちょっとでも間違えたら、それはおそらくデータベースにインポートできないのだ。データも壊れるだろう。
なんとか出来ないか。。そうだWindowsにはコマンドプロンプトがある。ちょっとしらべてみるとすぐにありました。以下の記事が一番参考になりました。
http://blog.kumacchi.com/2010/08/linuxunixsplitwindows.html
コマンドプロンプトで結合したいファイルがあるディレクトリに移動し、「copy」コマンドで、ファイルを「+」でつないで記述し、最後に半角スペースの後に結合後のファイル名を記述すればいいということです。
images.sql.aa~images.sql.azを全部つないで、images.sqlにコピーしなさいという命令となると思います。
上記のファイルを結合するときは下記のように記述すればいいみたいです。
images.sql.ac+images.sql.ad+・・・・・・+images.sql.az images.sql
今回は上手く連番になっているのでワイルドカード「*」が使えます。こうなります。
ほんとに一瞬でした。コマンドプロンプト恐るべしです。