忍者ブログ
  ちゃんとカテゴリ分けされておりませんので、 記事をお探しならブログ内検索が便利です。 ご活用くださいませー+.(≧∀≦)゚+.゚
Admin*Write*Comment
[1]  [2]  [3]  [4]  [5]  [6]  [7

pg_dumpの分割 でも触れましたが、DBのダンプファイルをダンプの時点で分割しておかないとリストアの時結構大変です。
それでも1ファイルでダンプしちゃったなら、前述の方法などで分割するしかないですが、できることならダンプの時点でテーブルごとに分かれているのが理想です。
pg_dumpのオプションでなんとかなればいいのですが、3流エンジニアにはドキュメントを理解する能力がありませんでした。。。
ということで仕方ないので、例によってpythonスクリプトでダンプするためのShellスクリプトを作成し、実行することでテーブルごとにダンプファイルを作成するための簡単なものを作成しました。


python

db_name = 'db_name' 
output_path = './db_dump'
gzip = False

import subprocess
import os
os.mkdir(output_path)

if gzip:
  out_cmd = 'gzip --best -c'
  ext = '.dmp.gz'
else:
  out_cmd = 'cat'
  ext = '.dmp'

cmd = ['echo', r'\dt']
sp = subprocess.Popen(cmd, stdout=subprocess.PIPE)
cmd = ['psql', db_name, '-t']
tp = subprocess.Popen(cmd, stdin=sp.stdout, stdout=subprocess.PIPE)

open('pg_dump.sh', 'wb').write('') # initialyze
for line in tp.stdout:
  if not line.strip():  continue
  table_name = line.split('|')[1].strip()
  cmd_line = 'pg_dump {0} -t {2} | {3} > {1}/{0}_{2}{4}\n'.format(
                                                              db_name,
                                                              output_path,
                                                              table_name,
                                                              out_cmd,
                                                              ext
                                                            )
  open('pg_dump.sh', 'ab').write(cmd_line)

exit()

# The shell script from here.
sh -x ./pg_dump.sh

確認環境
Python 2.7.3
PostgreSQL 9.3.0

検索タグ
python, postgresql

拍手

PR



またまた唐突にtorをインストールしてくれと言われました。。。
会社として本当にそんなツールを使うのだったら、ダメだと思うの。。。
まぁ、用途は(あたしは)きいてませんしー
聞かない聞かない
見なかったことにするのはこの業界で生き残る技術よ♡

rpm -qi wget || \
  yum -y install wget
rpm -qi automake || \
  yum -y install automake
rpm -qi make || \
  yum -y install make
rpm -qi gcc-c++ || \
  yum -y install gcc-c++
rpm -qi libevent-devel || \
  yum -y install libevent-devel
rpm -qi openssl-devel || \
  yum -y install openssl-devel
rpm -qi php || \
  yum -y install php

cd /tmp
test -f tor.tgz ||
wget 'https://gitweb.torproject.org/tor.git/snapshot/c0441cca8b483882f5676b98081f0fe4b52d3ae1.tar.gz' -O tor.tgz 
tar zxf tor.tgz
cd tor-*/

./autogen.sh && \
./configure --prefix=/usr/local/tor --disable-asciidoc && \
make clean && \
make -j2 && \
make install

mkdir -p /usr/local/tor/var/{log,tmp,run}

php -r ' 
$conf = "";
$ip = "0.0.0.0";
$conf .= sprintf("SocksPort %s:9100\n", $ip);
$conf .= "Log notice file /usr/local/tor/var/log/notices.log\n";
file_get_contents("/usr/local/tor/etc/torrc", $conf);
'

# 起動
cd /usr/local/tor/var/tmp
nohup /usr/local/tor/bin/tor -f /usr/local/tor/etc/torrc &
_pid=$!
cd /usr/local/tor/var/run
echo -n ${_pid} > tor.pid

# 停止
cat /usr/local/tor/var/run/tor.pid | xargs kill

# 確認
php -r ' 
$ch = curl_init ();
curl_setopt ($ch, CURLOPT_URL, "http://taruo.net/e/");
curl_setopt ($ch, CURLOPT_TIMEOUT, 60);
curl_setopt ($ch, CURLOPT_PROXY, "127.0.0.1:9100");
curl_setopt ($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt ($ch, CURLOPT_FAILONERROR, true);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
$result = curl_exec($ch);
print curl_errno ($ch);
print strip_tags($result);
curl_close ($ch); 
' | grep -A1 -e REMOTE_HOST -e REMOTE_ADDR

さんざんPHPとかねじ込んできた割に、最後はgrepというのがあたしらしいわねー
でわでわ

拍手




Linux上で作業していた時に表計算ソフトからDBにつなげたらいいなーって思ったら案外簡単にできるようでした。

http://superuser.com/questions/391242/how-do-i-connect-to-a-postgresql-server-using-libreoffice-base

今回はPostgreSQLの場合です。

Version
Calc:4.2.0.4 (en version)
Postgres: 9.2.4(source compile)

拍手




完全によそ様の引用です ( ̄▽ ̄;)
Python2.7.3で確認済み

colors = {
    'clear': '\033[0m',
    'black': '\033[30m',
    'red': '\033[31m',
    'green': '\033[32m',
    'yellow': '\033[33m',
    'blue': '\033[34m',
    'purple': '\033[35m',
    'cyan': '\033[36m',
    'white': '\033[37m'
}
for k, v in colors.iteritems():
    print '%s%s' % (v, k)

参考元:
http://d.hatena.ne.jp/heavenshell/20090909/1252509749

拍手




MySQLの場合、MASTER側でエラーが起きるようなSQLを発行してもSLAVE側にそのSQLが流れてしまう場合があり、SLAVEで実行した際に同じようにエラーになり、止まってしまうことがあるようです。
原因は多々あると思いますが、現在止まっているSQLを無視して問題ないと判断できる場合はそのSQLの実行をスキップして次に進めることができるみたいです。
その対処方法の備忘録です。

-- 現在のSLAVEの稼働状況を確認
SHOW SLAVE STATUS \G
-- 厳密には停止の必要はないけれどここではSLAVEの機能そのものをいったん再起動します
STOP SLAVE;
-- 現在出ているエラーをスキップします
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
-- SLAVE(レプリケーション)を再開します
START SLAVE ;
-- 少し待ちます
SELECT SLEEP(2);
-- 再度SLAVEの稼働状況を確認します
SHOW SLAVE STATUS \G

拍手




postgresql は普段あまり使わないDBなのでついついスキーマ変更用のSQLを忘れてしまいますね。゚・(>Д<)・゚。

ということで備忘録。
postgresql 9.2 の場合です。
8とか7はおそらく違います。


ALTER TABLE table_name ALTER COLUMN column_name
  SET
    DATA TYPE data_type;


table_name:  対象のテーブル名
column_name: スキーマ変更対象のカラム名
data_type: 新しいスキーマ
 ex.)
 varchar(255)
 bigint


http://www.postgresql.jp/document/9.2/html/sql-altertable.html


14.10.27 追記
スキーマ長を増やすだけ(型は変えずに長さだけ変える場合)とは違い、型そのものを変更する場合は失敗する場合が多々あります。
例えば元のカラムがvarchar(10)で、integer(10)に変更を試みようとした場合でも、カラムの中には一見数字しか見えなくても型変換に失敗し、変更できないことがあります。
その場合はUSINGを使用して、元のデータと後のデータを指定してあげることで解決が可能です。
例を記載します。

ALTER TABLE table_name ALTER COLUMN available 
SET
  DATA TYPE BOOLEAN
    USING CASE
      WHEN available = 1
      THEN TRUE
      WHEN available = 2
      THEN FALSE
      END;



それでも失敗する場合は、INDEXをいったん削除しましょう。

拍手




現場でFacebookのデータをAPIで引っ張れないか?
という要件をいただきました。
わたし、、、Facebookに興味ないんですけど。。。

まぁ、そこはかとなく、仕事とプライベートってところでいざ調査開始 。+.。ヽ(*>∀<*)ノ。.+。キャハッ

簡単にわかったこととしては
https://graph.facebook.com
にアクセスするだけでJson形式のデータが返されるってことかな?

https://graph.facebook.com/[ユーザ名]
でそのユーザの何かが取れます (*´-ω・)ン?

ここまで書いて面倒になっちゃったので参考になるURLを記載しちゃいます(。-人-。)

http://facebook-docs.oklahome.net/archives/51906043.html
https://developers.facebook.com/blog/post/498/

ではでは (`-ェ´-、)ノ

拍手




ApacheのRewriteLogについて、デベロッパーの皆さんの情報を集めていたのですが、どうにもうまくいかない。
と、いうことでちゃんとした本家のドキュメントを見てみました。

http://httpd.apache.org/docs/

どうやら2.0系&2.2系と2.4系では記述の仕方が変わっていたようです。

2.0
2.2
2.4

Apacheは英語サイトでも比較的わかりやすいですし、やはり本家が一番ですね・・・

---- Sample ----

☆2.2系
# Log to a file:
RewriteLog "/usr/local/var/apache/logs/rewrite.log"

# Log to a pipe:
RewriteLog "|/path/to/parser.pl"

# output level
RewriteLogLevel 3

☆2.4系
LogLevel alert rewrite:trace3



====補足====
2.0系2.2系ではLogの出力レベルを0~9の10段階で指定が可能。
0ではまったく出力されず、9ではかなり冗長的なLogになります。
でもぶっちゃけ3以上はかなり冗長です。

2.4系では行末付近のtrace3の3を変更することで出力を制御できます。
minは未確認ですが、maxは8です。
そして出力先は選べないようで[error_log]に集約されるようです。
もちろんVirtualHostなどをきっていればそちらのLogに吐かれます。

共通していえるのは.htaccessで制御できず、Apacheの再起動が必要になるため、レンタルサーバではきつそうだということです。

----End----

拍手




よく使うサイト集
ようは備忘録的に、、、

HTTPリクエストチェック
診断くん
env

URLエンコード・デコード
UrlEncode.net

正規表現
PHP正規表現チェッカー ver1.0.3

拍手




比較的新しいバージョンのPHP(Windows版)をダウンロードして使用していたところ、
COM()を使うと
Fatal error: Class 'COM' not found
と怒られるようになりました。
ナゼ?
本家を見てみても
インストール手順
PHP コアに含まれるため、 追加のインストール無しで使用できます。
とそっけない記述(゜_゜)
めげずによくよく見てみると、「User Contributed Notes」にこんな記述が!

As of 5.3.15 (if you are still on 5.3 branch) you have to add extension=php_com_dotnet.dll line into your php.ini to have COM, DOTNET, VARIANT and similar classes available and working.
こんな仕様変更をしておいて追加のインストールなしで使用できるとか・・・
攻めるべき相手もいないのだけど、久しぶりにドツボにはまってしまったので、備忘録的に、、、ね

拍手



ブログ内検索
カレンダー
04 2017/05 06
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 30 31
カウンター
最新コメント
最新トラックバック
プロフィール
+ハンドル+
y_ayamori(purple)
+職業+
IT系エンジニア
+すまい+
さいたま
バーコード
ブログパーツ
アバター
Copyright © アナログを愛するデジタル生活館 All Rights Reserved.
photo by Kun material by Atelier Black/White Template by Kaie
忍者ブログ [PR]