2019年4月18日木曜日

海外事務手数料

最近(2019-04-18 時点)、あちこちで mastercard / VISA 系の海外事務手数料の値上げが発生しているようなので、まとめてみた。(税込)

mastercard / VISA
VIEW1.63参照
エムアイ1.63参照
楽天1.63参照
セゾン1.63参照
Yahoo!1.63参照
JACCS1.63参照
Orico1.63参照
エポス1.63参照
ポケット(mastercard)1.90参照
三井住友2.16参照
MUFG2.16参照
d2.16参照
ポケット(VISA)2.16参照
Gold Point +2.16参照
セディナ2.20参照

mastercard / VISA は 1.63% が最安値だが、三井住友が 1.63 → 2.16% と改定していることから、他の mastercard / VISA 系も同様に 2.16% に改定する可能性が考えられる。

JCB
VIEW1.60参照
楽天1.60参照
セゾン1.60参照
Yahoo!1.60参照
JACCS1.60参照
Orico1.60参照
ポケット1.60参照
セディナ2.20参照
AmEx
楽天2.00参照
セゾン2.00参照

2019年4月11日木曜日

MySQL データベースのバックアップ

表のエクスポート

MySQL で表を丸ごとファイルにエクスポートする場合は、SELECT * FROM table を応用した INTO OUTFILE file による指定が基本となる:

SELECT * INTO OUTFILE '/mnt/data/tmp/sampletable.tsv' FROM Sample_Table;
  • ファイル形式は TSV(TAB 区切りでエスケープ方式が TAB 区切り特有のルールとなっている。CSV よりも遥かにスマートなフォーマット)
  • ファイルは上書き不可なので、既存の同名ファイルが存在してはならない。
  • 参考:MySQL 8.0 リファレンス
  • (出力先ファイル名や、表名などは一例)

エクスポートした表のインポート

反対にエクスポートした表をデータベースにインポートして書き戻す場合は次の命令が対応する:

LOAD DATA LOCAL INFILE '/mnt/data/tmp/sampletable.tsv' INTO TABLE Sample_Table;
  • エクスポートしたファイルを編集してデータエントリーを付け加えてインポートし直すと、元から存在したエントリーについては warning となり skip されるだけなので、気にせずにエントリーの追加用途に利用できる。

また、一部エントリーを元のデータに追加するのではなく、元のデータを修正して上書き更新したい場合であれば、TRUNCATE 命令を使って一旦消去してから全体丸ごと LOAD し直せばよい:

TRUNCATE TABLE Sample_Table;
LOAD DATA LOCAL INFILE '/mnt/data/tmp/sampletable.tsv' INTO TABLE Sample_Table;
参考:SHOW WARNINGS

LOAD の結果、追加したデータに何らかの不備があって WARNING が発生した場合は、直後に SHOW WARNINGS すれば WARNING 内容を確認することができる。

SHOW WARNINGS;

データベースのバックアップ

表の定義を含めたデータベースのバックアップは mysqldump コマンドを使う。こちらは SELECT 文のような SQL 上の操作ではなく、MySQL の対話モードの中で実行するものではなく、単独のシェルコマンドとしてインストールされるツールである:

$ mysqldump --databases Sample_Database > sampledatabase.sql
  • .sql ファイルは、データベースを復旧するための表定義の SQL 文などが含まれている。
  • SQL の命令文の中に、復旧すべき表のデータ内容が埋め込まれた形となっている。
  • 元々存在した表が削除・再作成されてデータがゼロから入力され直される形となる。
  • 参考:MySQL 8.0 リファレンス
  • (出力先ディレクトリ名や、データベース名などは一例)

ダンプしたデータベースのリストア

$ mysql Sample_Database < sampledatabase.sql

2019年4月7日日曜日

Python で Google SpreadSheets を CSV にエクスポート

OAuth2 を含めた gspread の説明は公式のリファレンス(12)が参考になる。

また、CSV へのエクスポートについては Stack Overflow の記事(Saving a google spreadsheet as a csv)を参考にした。

from oauth2client.service_account import ServiceAccountCredentials
import gspread
import csv

JSON_KEYFILE = 'XXX.json'
SPREADSHEET = 'テスト'
WORKSHEET = 'sheet1'
CSV_FILENAME = 'test.csv'

SCOPE = ['https://spreadsheets.google.com/feeds', 'https://www.googleapis.com/auth/drive']
serviceAccountCredentials = ServiceAccountCredentials.from_json_keyfile_name(JSON_KEYFILE, SCOPE)
gspreadClient = gspread.authorize(serviceAccountCredentials)
worksheet = gspreadClient.open(SPREADSHEET).worksheet(WORKSHEET)

with open(CSV_FILENAME, 'w', newline='') as csvFile:
    writer = csv.writer(csvFile)
    writer.writerows(worksheet.get_all_values())