アニメ『クオリディア・コード』
東京、千葉、神奈川の生徒たちが未知の敵と戦います。生徒といっても勉強シーンは今のところ全く出てきていないです(生徒たちに戦わせるアニメが流行ってるということでしょう)。生徒たちは戦闘能力がランク付けされていて、主席ともなるととても強いです、橋とか剣ひと振りで壊せます。異能力で戦う系アニメって、毎度キャラ作りって大変だなあと思います。キャラがかぶらないように特徴づけしなきゃならないし、あえて東京千葉神奈川って分けるなら、それぞれの都市をストーリーに絡めないとならないだろうし、クリエーターってすごいですね。
キャラ作りどころかカテゴライズが苦手な私のブログは、記事が多くなってきて、カテゴリーと記事の差異が目立つようになりました。そこで、いつかカテゴリを見直す時のため、WordPressで書いている当ブログのカテゴリ一覧を抽出してみます。
まずはMySQLへ接続。
~$ mysql -uroot -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 71059 Server version: 10.0.24-MariaDB-wsrep MariaDB Server, wsrep_25.13.raf7f02e Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>
一覧を表示して、データベース名を確認します。
MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mydb | | mysql | | performance_schema | +--------------------+ 4 rows in set (0.00 sec) MariaDB [(none)]>
WordPressのデータベースに切り替えます。ここではmydbとしています。
MariaDB [(none)]> use mydb; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed MariaDB [mydb]> show tables;
カテゴリ一覧は、以下のwp_termsです。親IDとの関連性は、wp_term_taxonomyで管理されています。
MariaDB [mydb]> show tables; +--------------------------------+ | Tables_in_mydb | +--------------------------------+ | wp_commentmeta | | wp_comments | | wp_links | | wp_options | | wp_postmeta | | wp_posts | | wp_site_cache | | wp_sitemanager_device | | wp_sitemanager_device_group | | wp_sitemanager_device_relation | | wp_term_relationships | | wp_term_taxonomy | | wp_termmeta | | wp_terms | | wp_usermeta | | wp_users | +--------------------------------+ 16 rows in set (0.00 sec)
wp_terpmsとwp_term_taxonomyのフィールドを見てみましょう。
MariaDB [mydb]> show columns from wp_terms; +------------+---------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+---------------------+------+-----+---------+----------------+ | term_id | bigint(20) unsigned | NO | PRI | NULL | auto_increment | | name | varchar(200) | NO | MUL | | | | slug | varchar(200) | NO | MUL | | | | term_group | bigint(10) | NO | | 0 | | | term_order | int(4) | YES | | 0 | | +------------+---------------------+------+-----+---------+----------------+ 5 rows in set (0.00 sec) MariaDB [mydb]> show columns from wp_term_taxonomy; +------------------+---------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------------+---------------------+------+-----+---------+----------------+ | term_taxonomy_id | bigint(20) unsigned | NO | PRI | NULL | auto_increment | | term_id | bigint(20) unsigned | NO | MUL | 0 | | | taxonomy | varchar(32) | NO | MUL | | | | description | longtext | NO | | NULL | | | parent | bigint(20) unsigned | NO | | 0 | | | count | bigint(20) | NO | | 0 | | +------------------+---------------------+------+-----+---------+----------------+ 6 rows in set (0.00 sec)
テーブル構成が分かりました。wp_termsからは、term_idとnameを、wp_term_taxonomyからは、term_idとparentを取得するスクリプトを組みます。スクリプト名は、pull-terms.shとしました。
~$ cat pull-terms.sh mysql -N -uroot -pパスワード DB名 -e "select term_id,name FROM wp_terms" | grep -v '予備\|未分類' > my_terms mysql -N -uroot -pパスワード DB名 -e "select term_id,parent FROM wp_term_taxonomy" > my_taxonomy
selectの際にフィールド名を非表示にするため、 mysqlの-Nオプションを使用しています。
my_termsへ書き出す際に、grepで未使用のカテゴリを除外しています。
このスクリプトを実行して、抽出したカテゴリです。
~$ . pull-terms.h ~$ cat my_terms 2 1.基礎 3 2.テキスト整形 4 3.パターンマッチ・検索・置換 5 4.文字コード 6 5.比較・ソート 7 6.バイナリ処理 8 7.ファイル・アーカイブ 9 8.日付・時間 10 9.管理 11 10.ソース・ビルド・インストール 12 11.ドキュメント・マニュアル 14 1-1.テキスト出力 15 12.計算 16 13.その他のツールとコマンドの連携 17 1-2.繰り返し 19 ドラマ・映画・アニメ 20 1-3.コマンドライン操作 23 1-4.パイプ・フィルタ 26 1-5.ジェネレータ 29 2-1.部分抽出 31 3-1.文字列検索 32 2-2.加工 33 3-2.正規表現 35 2-3.段組 40 3-3.文字列置換 42 3-3.バイナリ置換 45 4-1.文字コード 49 5-1.比較 51 5-2.並び替え 53 5-3.ランダムに並び替え 55 Vim 56 画像 58 データベース 60 Raspberry PI 62 Minecraft PI EDITION 64 Blender
次はjoinコマンドを使いますが、joinコマンドは、my_termsとmy_taxonomyが、ソートされていないとみなしますので(sortコマンドでオプションなしで実行した状態をソートされている状態とみなす)、–nocheck-orderを指定します。
~$ join --nocheck-order my_taxonomy my_terms | tee my_categories 2 0 1.基礎 3 0 2.テキスト整形 4 0 3.パターンマッチ・検索・置換 5 0 4.文字コード 6 0 5.比較・ソート 7 0 6.バイナリ処理 8 0 7.ファイル・アーカイブ 9 0 8.日付・時間 10 0 9.管理 11 0 10.ソース・ビルド・インストール 12 0 11.ドキュメント・マニュアル 14 2 1-1.テキスト出力 15 0 12.計算 16 0 13.その他のツールとコマンドの連携 17 2 1-2.繰り返し 19 0 ドラマ・映画・アニメ 20 2 1-3.コマンドライン操作 23 2 1-4.パイプ・フィルタ 26 2 1-5.ジェネレータ 29 3 2-1.部分抽出 31 4 3-1.文字列検索 32 3 2-2.加工 33 4 3-2.正規表現 35 3 2-3.段組 40 4 3-3.文字列置換 42 4 3-3.バイナリ置換 45 5 4-1.文字コード 49 6 5-1.比較 51 6 5-2.並び替え 53 6 5-3.ランダムに並び替え 55 16 Vim 56 16 画像 58 16 データベース 60 16 Raspberry PI 62 16 Minecraft PI EDITION 64 16 Blender ~$
カテゴリのID、親カテゴリID、カテゴリ名の順で格納されたカテゴリ一覧が出来上がりました。
コメント
[…] ← WordPressのカテゴリをコマンドラインで抽出する […]