仕方がないからといって検索した内容をファイルに出力したくない人(※シャア専用
日々の業務の中でDBを検索しないといけない時ってありませんか。
昨日までに食べた食パンの数とか。
集計しないといけないときありますよね。検索したらEXCELですよね。
日本人EXCEL大好きだし。
普通の人はこんな感じだろうな、と。
MySQL を検索した場合。ひとまず検索するのはみんなの情報スキマ。
最近 postgreSQL も操作するようになって
MySQL は Oracle色が強いのかなって感じはじめた今日この頃。
それにしても標準SQL規格とは。Oracle にもあるのですね。
DBA_TABLES とかいつも見ていた遠い昔。
taro@macbook-air[YAMADA]> desc information_schema.tables;
--------------
desc information_schema.tables
--------------
+-----------------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+---------------------+------+-----+---------+-------+
| TABLE_CATALOG | varchar(512) | NO | | | |
| TABLE_SCHEMA | varchar(64) | NO | | | |
| TABLE_NAME | varchar(64) | NO | | | |
| TABLE_TYPE | varchar(64) | NO | | | |
| ENGINE | varchar(64) | YES | | NULL | |
| VERSION | bigint(21) unsigned | YES | | NULL | |
| ROW_FORMAT | varchar(10) | YES | | NULL | |
| TABLE_ROWS | bigint(21) unsigned | YES | | NULL | |
| AVG_ROW_LENGTH | bigint(21) unsigned | YES | | NULL | |
| DATA_LENGTH | bigint(21) unsigned | YES | | NULL | |
| MAX_DATA_LENGTH | bigint(21) unsigned | YES | | NULL | |
| INDEX_LENGTH | bigint(21) unsigned | YES | | NULL | |
| DATA_FREE | bigint(21) unsigned | YES | | NULL | |
| AUTO_INCREMENT | bigint(21) unsigned | YES | | NULL | |
| CREATE_TIME | datetime | YES | | NULL | |
| UPDATE_TIME | datetime | YES | | NULL | |
| CHECK_TIME | datetime | YES | | NULL | |
| TABLE_COLLATION | varchar(32) | YES | | NULL | |
| CHECKSUM | bigint(21) unsigned | YES | | NULL | |
| CREATE_OPTIONS | varchar(255) | YES | | NULL | |
| TABLE_COMMENT | varchar(2048) | NO | | | |
+-----------------+---------------------+------+-----+---------+-------+
21 rows in set (0.01 sec)
taro@macbook-air[YAMADA]>
postgreSQL を標準で検索した場合にはこんな感じ。
若干違いがあるの分かりますか。
いずれも縦の罫線「|」パイプで項目を区切っている書式で
MySQLチームは表っぽくするために上下左右も括る几帳面さ。
YAMADA => \d information_schema.tables;
ビュー"information_schema.tables"
列 | 型 | 照合順序 | Null 値を許容 | デフォルト
------------------------------+-----------------------------------+----------+---------------+------------
table_catalog | information_schema.sql_identifier | | |
table_schema | information_schema.sql_identifier | | |
table_name | information_schema.sql_identifier | | |
table_type | information_schema.character_data | | |
self_referencing_column_name | information_schema.sql_identifier | | |
reference_generation | information_schema.character_data | | |
user_defined_type_catalog | information_schema.sql_identifier | | |
user_defined_type_schema | information_schema.sql_identifier | | |
user_defined_type_name | information_schema.sql_identifier | | |
is_insertable_into | information_schema.yes_or_no | | |
is_typed | information_schema.yes_or_no | | |
commit_action | information_schema.character_data | | |
YAMADA => \q
information_schema は postgreSQLだけかと思ったら両方出てきて草。
美容整形スタート(MySQL)
MySQLの場合
このままでもいいけど、やっぱりセルを分割してEXCELだから表にしたい
具体的な手順(省略w
でもさ★
項目の先頭に空白があったり、項目のお尻には空白が詰まっていること
気になる人はいませんか。
美容整形スタート(postgreSQL)
まずは全セルを文字列にしてから貼り付けする
具体的な手順(省略w
でもやっぱり、このあたり気になりませんか。
先頭の空白とか、項目がないはずなのに半角空白で穴埋めされたデータ。
いりませんよね。
やりたいことは・・「トリム」。
もちろん sql を terminal で実行したのを切り貼りするのではなく
mysql でも postgreSQL でも
SQLの検索結果をファイルに出力することできます。
そうすれば区切り文字がタブになるので簡単にEXCELはりつけできます。
でもサーバ上に出力されたファイルをローカルにもってくるのって
結構大変だったりしませんか。
そもそもファイルに出力した内容を外部に持ち出していいの?って。
面倒ですよね。
そこでアレ。マクロの出番です
毎回マクロを作成するのは面倒ですよね。
そんな場合はアカウントに紐づく共通のマクロファイルに登録できます。
重要ポイント;これなら毎回マクロを作成しなくても使える。なんて神。
・ファイル名;PERSONAL.XLSB
・格納場所;C:\Users\TaroYamada\AppData\Roaming\Microsoft\Excel\XLSTART
Option Explicit
Sub 選択した範囲をトリム()
'
' 選択した範囲をトリム Macro
'
Dim c As Range
Application.ScreenUpdating = False
For Each c In Selection
c = WorksheetFunction.Trim(c)
Next c
Application.ScreenUpdating = True
End Sub
コントロールティー!
半角空白が全桁埋められていた項目もなくなっています。スッキリ。
コントロールティー!!
項目名とかちゃんと見えるようになったの分かりますかしら。
まとめ
「私しか得しないニッチな技術」ってキーワードをみたらドキッて。
地味に便利なので誰かに伝えたくて投稿。
空白トリムくらいしてから提出してよって依頼元から嫌な顔をされるのを
数行のマクロとショートカットを使うだけで回避できます。
どうか、みなさんにしあわせが届きますように🎅