Archive for 11月 2014
MySQL) 指定したカラムのすべてのデータの指定の文字列を指定の文字列で置換
mysql> update wp_2013kposts set `post_title` = replace(`post_title`, “\n”, “”);
replace(`post_title`, “\n”, “”)の部分は「replace(`指定カラム名`, “置換する対象の文字列”, “置換の文字列”)
WordPressのデータですが、エクスポートしたデータのタイトル部分で文字列が途切れているものが多々ありました。調べたところタイトルの入るカラムの文字列に改行コードが混入していることがわかったので、この方法で一括処理の修正をしました。
「\n」は、UNIX環境での改行になります。プログラム的に使えないというか通用しない場面もたまにありますが、MySQLではそのまま使えました。vimなんかもそうだったように思います。
参考:
FutureGadget – メモ:Vimの文字コード変換と改行コード http://www.futuregadget.com/?p=34
MySQL) クエリーの結果をcsyファイルとしてエクスポート
mysql> SELECT `wp_2013kposts`.`ID` AS `ID`, `wp_2013kposts`.`post_title` AS `post_title`, `wp_2013kposts`.`post_date` AS `post_date` FROM `hirono-hideki-01_2013k`.`wp_2013kposts` `wp_2013kposts` WHERE `post_status` = ‘publish’ INTO OUTFILE “/tmp/sqldata.csv” FIELDS TERMINATED BY ‘,’;
取得しているカラムは3つだけです。IDとタイトル、投稿日時です。
UNIX環境(Ubuntu 14.04)なので/tmpディレクトリにcsvファイルを保存していますが、他の場所だとパーミッション(アクセス権限)でエラーが出ていました。一般ユーザの権限だとファイルの削除も移動も出来なかったので、sudoコマンドで管理者権限でコマンドを実行しました。
MySQLはコマンドラインからMySQLサーバにログインして操作しています。
表計算ソフトcalc) データの相対参照と絶対参照を利用してURLリンクを埋め込む
=HYPERLINK(CONCATENATE($H$1, A1))
URLリンクと言ってもcalcの場合、Ctrlキーを押しながらのリンクのクリックになります。
WordPressのブログのURLに使っていますが、データベースのIDカラムの値は、そのままリクエストパラメータとして利用できます(例: http://登録ユーザ名.sakura.ne.jp/wp2013k/?p=7543)。なお、このIDはxmlrpcを使ったAPIの投稿でも関数の返却値として得ることの出来る値です。
参考情報:
セルの絶対参照と相対参照 – LibreOffice Help https://help.libreoffice.org/Calc/Addresses_and_References,_Absolute_and_Relative/ja
HYPERLINK http://nanapi.jp/51392/
org-modeのデータをvimプラグインでWordPressに投稿するデータファイルを生成するpythonスクリプト
利用の前提ですが、Emacsのorg-modeで対象の部分木を「C-c C-x M-w」でコピーします。Emacsではヤンクされたことになりますが、Ubuntuのシステムではクリップボードではなく文字列の範囲選択と同じセレクションにコピーされた文字列が格納されます。このデータをシステムコマンドのxselで取得し利用します。
org-modeの部分木における見出しの部分からアスタリスクを除去し、ブログのタイトルに設定しています。
コマンドラインの利用では引数を一つとりますが、これはタグの指定になります。引数を省略した場合は”告訴状の下書き”だけがタグとして設定されます。WordPressの仕様としてタグは半角のカンマで区切ることにより複数の指定になります。
記録を兼ねて投稿データをファイルとして保存するようにしていますが、ファイルの並び順とシェルコマンドでの扱いをしやすくするため日時を接頭辞として付加しています(例: 2014-11-11_113536_原告訴訟代理人長谷川紘之弁護士(金沢弁護士会)による犯罪的関与の真相解明と社会的責任追及の必要性について 2014年10月8日.text)。
#!/usr/bin/python3 # -*- coding: utf8 -*- import sys import subprocess import re import datetime argvs = sys.argv if len(argvs) == 2: tags = "告訴状の下書き," + argvs[1] else: tags = "告訴状の下書き" text = subprocess.check_output(["xsel","-o"]) match = re.search('\*\*\*\* (.+)', text.decode('utf-8')) title = match.group(0).replace('**** ','') d = datetime.datetime.today() date = d.strftime("%Y-%m-%d_%H%M%S_") text = """\"=========== Meta ============ \"StrID : \"Title : %s \"Cats : 2014-木梨松嗣弁護士(金沢弁護士会)に対する告訴状(被疑事実殺人未遂)のブログ版 \"Tags : %s \"========== Content ========== %s""" % (title, tags, text.decode('utf-8')) print(text) filename = "%s%s.text" % (date, title) f = open(filename, "w") f.write(text) f.close print("%s を作成しました。" % filename)