キュアセブン技術ブログ

考えたこと,学んだことを書きます

DBをCSVファイルに落としたい

DB扱わせてもらえることになったので調べたことを書き残しておく.

 

--目次--

 --

 

経緯

  • データをプリントアウトする時,DBをHTMLファイルに,もしくはCSVファイルに落としてくることができればハッピーなので簡単に落としてこれるツールを作る.
  • データベースの構造を理解する.

 

 

やること

DBをHTMLファイルに落としこむ手順をまとめて,簡単にデータを取ってこれるようにする.

  1. HTMLファイルになるまでの過程で,DBをMySQLコマンドでXMLファイルにできる.
  2. XMLは簡単にHTMLにできる.

DBをCSVファイルに落とし込む手順をまとめて,簡単にデータを取ってこれるようにする.

  • MySQLコマンドで直接CSVにできるか?
  • MYSQLコマンドでXMLに落とした後,それをCSVにするか?

試してみる.

 

 

前提知識

HTML

略.

 

HTMLに落とす際生成されるXMLファイルについて.

XML

5分でわかる!XML超入門 第01回 何はともあれXMLって何? | CMSとITアウトソーシングを提供する、XMLソリューションカンパニー

ソースコード見たら察した

XML in 10 points

公式では10個のポイントにしてまとめてあります,でも7,8,9は「俺にもよくわからん」って書いてあって実際7個です.

簡単にHTMLに置き換えることができる形式.

XMLである理由
  • タグを自由に決められることは,データに意味を持たせられるということ.
  • タグによってデータを扱うことができる.
  • デザインを分離しているので互換性が高い.
XMLパーサ

アプリケーションでXMLを使えるようにするツール

  • msxml:ブラウザ上でXML文書を扱える
  • IE5:XSLTプロセッサを搭載しているので,XMLをHTMLとして使えるXSLに変換することができる.
MySQLXML

MySQL :: MySQL 5.6 リファレンスマニュアル :: 13.2.7 LOAD XML 構文

 

 

 

 

最終目的のCSVファイルについて.

CSV

Comma Separated Valueカンマで区切った値(察し)

*1

MySQLCSV

MySQL - csvデータをデータベースに格納する方法 - Qiita

 やりたいことは逆だった.データベースをCSVにする.

 

やったこ

HTMLで出力すること.

テーブルリストを出力する

XMLで出力

% echo "SHOW TABLES;" | mysql -u ${sql user name} -D ${db name} -p${password} -h 0.0.0.0 -P 3307 -X > list.xml

 HTMLで出力

% echo "SHOW TABLES;" | mysql -u ${sql user name} -D ${db name} -p${password} -h 0.0.0.0 -P 3307 -H > list.html

あるテーブルの全てのカラムの情報を取ってくること.

XMLで出力
% echo "SHOW COLUMNS FROM ${tablename}" | mysql -u ${sql user name} -D ${db name} -p${password} -h 0.0.0.0 -P 3307 -X > ${tablename}.xml

HTMLで出力

% echo "SHOW COLUMNS FROM ${tablename}" | mysql -u ${sql user name} -D ${db name} -p${password} -h 0.0.0.0 -P 3307 -H > ${tablename}.html

本来はXMLファイルで出力したものをXSLファイルと合わせてhtmlにするのがよかったんだけど,諦めた.どうせhtmlは使うことはない.やるとしたら,xslを作ってからmsxsl test.xml test1.xsl -o test.htmlでできる.

 

CSVにするにはどうしたら良いか調べた.

案1:mysqlで直接CSVに落とす

reCatnap: mysql コンソールからCSV出力 » PCスキルの小技・忘却防止メモ

DBから直接CSVにすることは難しそう.コンマ区切りのFIELDS TERMINATED BY ',' とダブルクオーテーションでくくるというOPTIONALLY ENCLOSED BY '"'がうまく通らなかった.

f:id:shiningcureseven:20170927180801p:plain

syntaxエラー.

案2:xmlにしてそれをCSVに整形する

XMLをCSVに変換する|キノコ♪タケノコ♪こたけの子♪

SDKとか入れてきたらできるらしいがめんどくさい

ruby - xmlファイル内の要素の属性をcsv形式で保存したい.使用言語はrubyです. - スタック・オーバーフロー

タグで囲われた部分をなんて書いたらいいかわからない.

XML処理 REXMLの使い方 - プログラムメモ

にelement.textとあるがsyntax errorみたい.

f:id:shiningcureseven:20170927185355p:plain

mapおさらいして使ったらうまくいきそう.

 

このやり方も有効そう.hashをつかって.

Rails4でJSON, XML, YAMLの読み込みと出力 - Rails Webook

Ruby Array of HashをCSVに変換 - Qiita

*1:windowsには便利なツールがあるみたいです.Excelのいらない機能を省き,マクロ機能をJavaRubyなどのプログラミング言語でかける.

CSVの整形ならExcelよりもおすすめ ~「EmEditor」の自動化機能で作業を効率化! - 窓の杜