MySQLでテーブルのデータをインポート・エクスポートする

IT関連

このブログにある英単語アプリでも使っているMySQLのインポートとエクスポートについてです。

用語はダウンロード・アップロードでもなんでもいいです。

 

アップロードする

CSVデータをエクセルで作る

エクセルは普通に列と行で作ればOKだが、テーブルのレイアウトに合わせること。

作って保存するときはCSV形式で。名前は今回はquestions.csvとする。

エクセルで複数のシートを作っていてもCSVは1つのシートしかできないので注意。

エクセルの文字コードはShift-JISなので、サーバ側の文字コードUTF-8Nに変換する。TeraPadなどのエディタで形式を変換して保存できる。改行コードもCRLFからLFに変換しておいた方が無難。

 

CSVデータをアップする

FTPソフトでアップする。場所は/tmp直下。

 

CSVデータを確認する

TeraTermなどのターミナルソフトを使ってサーバにログインする。

$ ls /tmp

/tmp直下にquestions.csvがあればOK。

 

CSVデータをテーブルに取り込む

questions.csvをテーブルに取り込みます。テーブル名はwordsとします。

まずターミナルでサーバにログインして、MySQLにログインします。useを使ってテーブルも選びます。

LOAD DATA LOCAL INFILE '/tmp/questions.csv' INTO TABLE words FIELDS TERMINATED BY ',' ENCLOSED BY '"' (カラム名,カラム名,カラム名,カラム名);

カラム名は既存のテーブルのカラム名に合わせます。もちろん作ったCSVにも合わせます。順番もです。

これを実行すればテーブルにデータが追記されます。既存のデータはクリアされないのでご安心を。

 

ダウンロードする

ダウンロードはMySQLのデータをCSVとしてPCに引っ張るまで。

CSVにすればエクセルで開けるのでどうとでもなる。

テーブル名はwords。ターミナルでサーバとMySQLにログインしてから行います。

作るcsvのファイル名はwords.csvとします。

SELECT * FROM words INTO OUTFILE '/tmp/words.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"';

 

これで/tmpにwords.csvが作成されます。後はFTPソフトを使ってデータを落とせばいい。

落とした後にすぐエクセルでCSVを開いたら文字化けしているはず。

これはアップロードのときと同じで文字コードが違うから。

エクセルで開くまえにTeraPadなどのエディタで文字コードを変換してあげること。

これで一件落着。

コメント

タイトルとURLをコピーしました