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

これもすぐ忘れてしまうのよねー
ってことでメモします。


sum(1 for line in open('filename'))

試験環境
Windows7 or Linux
Python 2.7.8
Python2.6.6

参考URL
http://d.hatena.ne.jp/cafistar/20120405/1333600582
http://stackoverflow.com/questions/845058/how-to-get-line-count-cheaply-in-python

拍手

PR



データベース上で日付の計算を行いたいことはよくあります。
集計、はビッグデータ時代には必須ともいえるかもしれません。
MySQLは多くの日付計算のための仕組みを用意してくれています。
遠慮なく使わせていただきましょう^^

ですが、注意点もあります。
それはMySQLはCAST(型変換)がとても強く働くことです。
これは便利なようですが、よく理解しないまま使用すると想定しない値を返却する場合があります。
加えて、関数にたくさんのシノニム(別名:alias)が存在するので、結構現場に混乱をもたらします。
とはいえ便利ですし、レコードの解析の際はお世話になることが多いですので、覚えておいて損はありません。
大事なのは、日付の場合はこの関数。
時間の場合はこの関数。
など決めを作り、運用するのがいいかもしれませんね。
もっとも私は関数あまり使いませんけど~ (えっ

-- 今日
SELECT NOW(), CURDATE(), CURTIME();
-- 日付計算
SELECT
    NOW()
    , NOW() + INTERVAL 1 DAY
    , NOW() + INTERVAL 1 MICROSECOND
    , NOW() + INTERVAL 1 SECOND
    , NOW() + INTERVAL 1 MINUTE
    , NOW() + INTERVAL 1 HOUR
    , NOW() + INTERVAL 1 DAY
    , NOW() + INTERVAL 1 WEEK
    , NOW() + INTERVAL 1 MONTH
    , NOW() + INTERVAL 1 QUARTER
    , NOW() + INTERVAL 1 YEAR
    , NOW() + INTERVAL 1.111111 SECOND_MICROSECOND
    , NOW() + INTERVAL '01:01.111111' MINUTE_MICROSECOND
    , NOW() + INTERVAL '01:01' MINUTE_SECOND
    , NOW() + INTERVAL '01:01:01.111111' HOUR_MICROSECOND
    , NOW() + INTERVAL '01:01:01' HOUR_SECOND
    , NOW() + INTERVAL '01:01' HOUR_MINUTE
    , NOW() + INTERVAL '1 01:01:01.111111' DAY_MICROSECOND
    , NOW() + INTERVAL '1 01:01:01' DAY_SECOND
    , NOW() + INTERVAL '1 01:01' DAY_MINUTE
    , NOW() + INTERVAL '1 01' DAY_HOUR
    , NOW() + INTERVAL '1 1' YEAR_MONTH
\G

中にはMICROSECOND型で返ってくるものもあります。
当然これはこれで正ですが、見慣れた形式にしたい場合はCASTが覚えやすいと思います。

SELECT
    CAST(NOW() AS DATETIME)
    , CAST(NOW() AS DATE)
    , CAST(NOW() AS TIME)
\G

さらに細かく日付の形式を指定するならフォーマットを使います。

SELECT
    NOW()
    , DATE_FORMAT(NOW(), '%a') AS 'Abbreviated weekday name (Sun..Sat)'
    , DATE_FORMAT(NOW(), '%b') AS 'Abbreviated month name (Jan..Dec)'
    , DATE_FORMAT(NOW(), '%c') AS 'Month, numeric (0..12)'
    , DATE_FORMAT(NOW(), '%D') AS 'Day of the month with English suffix (0th, 1st, 2nd, 3rd, …)'
    , DATE_FORMAT(NOW(), '%d') AS 'Day of the month, numeric (00..31)'
    , DATE_FORMAT(NOW(), '%e') AS 'Day of the month, numeric (0..31)'
    , DATE_FORMAT(NOW(), '%f') AS 'Microseconds (000000..999999)'
    , DATE_FORMAT(NOW(), '%H') AS 'Hour (00..23)'
    , DATE_FORMAT(NOW(), '%h') AS 'Hour (01..12)'
    , DATE_FORMAT(NOW(), '%I') AS 'Hour (01..12)'
    , DATE_FORMAT(NOW(), '%i') AS 'Minutes, numeric (00..59)'
    , DATE_FORMAT(NOW(), '%j') AS 'Day of year (001..366)'
    , DATE_FORMAT(NOW(), '%k') AS 'Hour (0..23)'
    , DATE_FORMAT(NOW(), '%l') AS 'Hour (1..12)'
    , DATE_FORMAT(NOW(), '%M') AS 'Month name (January..December)'
    , DATE_FORMAT(NOW(), '%m') AS 'Month, numeric (00..12)'
    , DATE_FORMAT(NOW(), '%p') AS 'AM or PM'
    , DATE_FORMAT(NOW(), '%r') AS 'Time, 12-hour (hh:mm:ss followed by AM or PM)'
    , DATE_FORMAT(NOW(), '%S') AS 'Seconds (00..59)'
    , DATE_FORMAT(NOW(), '%s') AS 'Seconds (00..59)'
    , DATE_FORMAT(NOW(), '%T') AS 'Time, 24-hour (hh:mm:ss)'
    , DATE_FORMAT(NOW(), '%U') AS 'Week (00..53), where Sunday is the first day of the week; WEEK() mode 0'
    , DATE_FORMAT(NOW(), '%u') AS 'Week (00..53), where Monday is the first day of the week; WEEK() mode 1'
    , DATE_FORMAT(NOW(), '%V') AS 'Week (01..53), where Sunday is the first day of the week; WEEK() mode 2; used with %X'
    , DATE_FORMAT(NOW(), '%v') AS 'Week (01..53), where Monday is the first day of the week; WEEK() mode 3; used with %x'
    , DATE_FORMAT(NOW(), '%W') AS 'Weekday name (Sunday..Saturday)'
    , DATE_FORMAT(NOW(), '%w') AS 'Day of the week (0=Sunday..6=Saturday)'
    , DATE_FORMAT(NOW(), '%X') AS 'Year for the week where Sunday is the first day of the week, numeric, four digits; used with %V'
    , DATE_FORMAT(NOW(), '%x') AS 'Year for the week, where Monday is the first day of the week, numeric, four digits; used with %v'
    , DATE_FORMAT(NOW(), '%Y') AS 'Year, numeric, four digits'
    , DATE_FORMAT(NOW(), '%y') AS 'Year, numeric (two digits)'
    , DATE_FORMAT(NOW(), '%%') AS 'A literal “%” character'
    , DATE_FORMAT(NOW(), '%x') AS 'x, for any “x” not listed above'
\G


時刻形式からの展開

SELECT
    NOW()
    , EXTRACT(DAY FROM NOW())
    , EXTRACT(MICROSECOND FROM NOW())
    , EXTRACT(SECOND FROM NOW())
    , EXTRACT(MINUTE FROM NOW())
    , EXTRACT(HOUR FROM NOW())
    , EXTRACT(DAY FROM NOW())
    , EXTRACT(WEEK FROM NOW())
    , EXTRACT(MONTH FROM NOW())
    , EXTRACT(QUARTER FROM NOW())
    , EXTRACT(YEAR FROM NOW())
    , EXTRACT(SECOND_MICROSECOND FROM NOW())
    , EXTRACT(MINUTE_MICROSECOND FROM NOW())
    , EXTRACT(MINUTE_SECOND FROM NOW())
    , EXTRACT(HOUR_MICROSECOND FROM NOW())
    , EXTRACT(HOUR_SECOND FROM NOW())
    , EXTRACT(HOUR_MINUTE FROM NOW())
    , EXTRACT(DAY_MICROSECOND FROM NOW())
    , EXTRACT(DAY_SECOND FROM NOW())
    , EXTRACT(DAY_MINUTE FROM NOW())
    , EXTRACT(DAY_HOUR FROM NOW())
    , EXTRACT(YEAR_MONTH FROM NOW())
\G


UNIX TIMESTAMP

SELECT
    NOW()
    , UNIX_TIMESTAMP()
    , FROM_UNIXTIME(UNIX_TIMESTAMP())
    , FROM_UNIXTIME(UNIX_TIMESTAMP()) + 0
    , FROM_UNIXTIME(UNIX_TIMESTAMP(), '%Y %D %M %h:%i:%s %x')
\G

月末計算
日付を含む型であること。
有効は日付形式であること

SELECT
    NOW()
    , LAST_DAY(NOW())
    , LAST_DAY(CURDATE())
    ;


時刻、日付作成
MAKETIME()は0パディングされたフォーマットは受け付けない。

SELECT
    NOW()
    , MAKEDATE(EXTRACT(YEAR FROM NOW()), 1)
    , MAKEDATE(EXTRACT(YEAR FROM NOW()), 141)
    , MAKETIME(EXTRACT(HOUR FROM NOW())+0, EXTRACT(MINUTE FROM NOW())+0, EXTRACT(SECOND FROM NOW())+0)
    , MAKETIME(EXTRACT(HOUR FROM NOW())+1, EXTRACT(MINUTE FROM NOW())+1, EXTRACT(SECOND FROM NOW())+1)
\G


いわゆるstrptime()

-- Apacheのログから拾ってみたけど、MySQLはTimezoneのフォーマットがないのね(^_^;)
SELECT STR_TO_DATE('[16/Jan/2015:10:39:13 +0900]','[%d/%b/%Y:%T +0900]');


weekday
(0 = Monday, 1 = Tuesday, … 6 = Sunday).


SELECT
    NOW()
    , WEEKDAY(NOW() + INTERVAL 0 DAY)
    , WEEKDAY(NOW() + INTERVAL 1 DAY)
    , WEEKDAY(NOW() + INTERVAL 2 DAY)
    , WEEKDAY(NOW() + INTERVAL 3 DAY)
    , WEEKDAY(NOW() + INTERVAL 4 DAY)
    , WEEKDAY(NOW() + INTERVAL 5 DAY)
    , WEEKDAY(NOW() + INTERVAL 6 DAY)
\G


その他時刻差分とか出せるみたいだけど、こちらはUNIX TIMESTAMPを中継して
整数で計算した方が良いと思うの。
わかりやすいしね。
マイクロ秒まで考慮する必要があるならいいけど、MySQLのカラム型にマイクロ秒まで
考慮できるデータがあったっけ?
という感じです (^-^;)

でわでわ

拍手




postgresqlにはdescがないので、informationスキーマにあるテーブルを逐一確認しなければなりません。
仕方ないことなんだけど…

-- テーブル一覧
SELECT
  table_catalog
  , table_schema
  , table_name
  , table_type 
FROM
  information_schema.tables 
WHERE
  table_schema = '[schema_name]'; 

-- カラム一覧
SELECT
  * 
FROM
  information_schema.columns 
WHERE
  table_schema = '[schema_name]' 
ORDER BY
  table_name
  , ordinal_position; 






拍手




アクセスが10,000超えたようです。
ありがとうございます。

と、いってもコメントからするに、botさんたちばかりでしょうけどね(苦笑)

拍手




先日ちゃんとテストもしないで公開したら、バグがひどかったので修正します。
先日のは非公開にしまーす。

PostgreSQLのpg_dumpを
pg_dump db_name > db_name.dmp
見たく取得したはいいものの、実際にリストアするときに特定のテーブルだけ、リストアしたいねー
なんてことはよくあります。
と、いうことで、あまり大きいファイルには向かないけど、ファイルを分割するスクリプトをPythonで書いてみました。

python
import os
dump_file_path = './db_name.dmp'
dump_path = os.path.dirname(dump_file_path)
dump_file = os.path.basename(dump_file_path)

## define
# 処理を止める行数(0で最後まで)
break_point = 0
line_no = 0
file_no = 0
delimiter_flg = 0
prefix = u's'
init_file = True
log_file = '%s_log_%s' % (prefix, dump_file)

# main

# initialyze outputo file
if init_file:
  old = filter(lambda x: x.startswith(prefix), os.listdir(dump_path))
  for _file in old: os.unlink(os.path.join(dump_path, _file))

# splitting
f = open(dump_file_path, 'rb')
for line in f:
  line_no += 1
  if line.strip() == '--':
    if delimiter_flg == 2:
      delimiter_flg = 1
      file_no += 1
      print '次のセクションに移動しました。 処理行数[%s], 処理セクション[%s]' % (line_no, file_no)
    else:
      delimiter_flg += 1
  elif line.startswith('--'):
    open(log_file, 'ab').write('\t'.join([str(line_no), str(file_no), line]))
  open('%s%03d_%s' % (prefix, file_no, dump_file), 'ab').write(line)
  # print (file_no, delimiter_flg, line.strip())
  if 0 < break_point < line_no:
    break

f.close()

これでカレントディレクトリに分割されたファイルが出来上がるので
中身を確認しつつ、目的のテーブルのデータをダンプしてください。
INDEXとかは面倒だと思います。
そんな書き方はナンセンス!
なんてFBは随時受け付けますが、理解できないかもです(-_-;)

確認環境
Python2.7.3
PostgreSQL 9.3.3

拍手




しばらくninja Blogにログインできなかったのだけど、今日できましたemoji
なので、引き続きがんばりますねemoji
月一くらいになっちゃうのだけど…emoji

拍手




DNS落ちでしばらくこのブログそのものにアクセス出来ませんでしたが、復活させました。
忍者ツールズはこのへんちょっとだけわかりにくいのよね…(^^ゞ

相変わらずマイペースな更新になると思うけど、がんばりマスv

拍手




何事もそうだけどプライオリティをつけて作業をするってことは大事だと思うのよね。
忙しいならなおさら。

残念ながら人はシングルタスクでしか動くことができません。
中にはマルチで稼働するかたもいらっしゃると思いますが・・・

多くの人は集中力含め、同時に実施できる作業は一つではないでしょうか。

ITなどPCを操作することが多ければなおさらよね。
キーボード入力できるのはひとつの入力エリアだけだし。
打鍵(タイピング)しながら資料に目を通しても頭に入ってこないでしょう。

故に作業が複数ある場合は同時にはこなせないので、どれから着手するか、が重要になってきます。
一番簡単なのが、期限が付いていればいいのですが・・・
(すべての作業が期限ギリギリなんてこともあるけどねー)
着いていない場合はウェイトに応じて捌いていかないといけません。

しかし、これができない人がいるのよね。
今日までだって言っているのに、全く進捗がない。
うーん。
できないならできないでフラグを上げて欲しいし。

別のことやっていたなら、なぜ、今日中と言われたタスクに着手していないのでしょう?
私ははたはた疑問に思うのです。

わからなければ聞きましょう。
アウトプットの合う作業に納期を守ることは必要です。

仕事のできるできないってさ、
速さよりも、進め方なのかもね。

もっち品質は最優先よー ノシ

でわでわ

拍手




だからパンツ、ぱんつとやかましかった人たちを晒します。 
想像していたより多くてびっくりです。。。
フォローしている人なんて100人もいないのに・・・


date 昇順
tweet
2011/8/2 0:04
びっくりしたついでにきょうはぱんつのひ
2011/8/2 0:40
今日はーーーーぱんつの日ーーーーー!!
2011/8/2 0:41
みんなーーーー今穿いてるパンツは何色だあああああああ!
2011/8/2 0:50
kou_199のぱんつの色はゴールドです。 http://t.co/tCGZQQP  水色だっつって...
2011/8/2 0:51
彩森紫 のぱんつの色は蛍光ピンクです。 http://t.co/k50duNw  蛍光色って?
2011/8/2 1:11
@al_aya_yuka おやすみぱんつー!
2011/8/2 2:41
おやすみパンツ!
2011/8/2 7:43
うーなのぱんつの色は輝く白さです。 http://t.co/N7JcIjb
2011/8/2 8:11
今日はおぱんちゅの日
2011/8/2 8:29
今日は朝からコウさんRTしたので、私のTL上でパンツ発言は全部RTすることにしました ノシ
2011/8/2 9:41
しまぱんmogmog
2011/8/2 9:55
だれかパンツうp(バンバン
2011/8/2 9:57
パンツの日にふさわしいアイコン→ @meltfire01
2011/8/2 10:28
RT @SE_PD2ndAC: パンツその物に価値があるわけではない。パンツが守る中身が気高い物だか...
2011/8/2 11:50
おはようパンツ
2011/8/2 12:00
今日はカレーうどんの日でもあるのか。お昼はカレーうどんとパンツどっちにしようかな
2011/8/2 12:10
@kou_199 カレーパンツでなければすべて良し!
2011/8/2 12:19
@al_aya_yuka パンツが黄ばんではおいしくなさそうですもんね!
2011/8/2 12:40
@kou_199 黄ばんでなかったらおいしそうなの(゜∇゜)? まぁそこはむしろ萌える、ってならない...
2011/8/2 12:43
@al_aya_yuka パンツが冷やされてるの!?涼しそう!そしておいしそう!ww
2011/8/2 13:09
キャッ/// RT @Keros_a_n パンツくれえええええええええ
2011/8/2 13:16
ぱんちゅぅ…おぱんちゅかぶらせてほしいのぉ…おぱんちゅぅ……
2011/8/2 13:19
おぱんちゅおぱんちゅおぱんちゅおぱんちゅおぱんちゅおぱんちゅおぱんちゅおぱんちゅおぱんちゅおぱんちゅ...
2011/8/2 13:21
そうだよ!パンツの日だよ!RT @shuumai: あとそうだ
2011/8/2 13:23
【おぱんちゅ百烈拳】おおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおお...
2011/8/2 13:25
【おぱんちゅ六十四掌】2おぱんちゅ!4おぱんちゅ!8おぱんちゅ!16おぱんちゅ!32おぱんちゅ!64...
2011/8/2 13:50
今日はパンツの日だっていうのに、京都まで出張に行かねばならない。掲示板のログが流れそうで怖いなぁ。
2011/8/2 13:54
RT @fukae: ぱんつの日とだか言ってアイコン腐ってるひとがいっぱいいる
2011/8/2 14:10
ただいおぱんちゅ!
2011/8/2 15:10
RT @kyu_ta: 白いスカートの女性社員。パンツはピンク。確認。
2011/8/2 15:16
RT @bright999: 今日はぱんつの日らしいので街でスカートを穿いてる人に「パンwwwツーw...
2011/8/2 15:26
トレンドに「パンツの日だ」ってあったので見てみたらフォロワーさんのツイートばかりが並んでて、一瞬「ま...
2011/8/2 16:32
ちょっと出来心で書いたばっかりに@リプ欄が暴走して…Σ( ̄▽ ̄; みんながぱんつの日が大好きだってこ...
2011/8/2 16:34
@namaedayo @mizuki31252087 なまえさんお大事にしてくださいね~。2週間…8...
2011/8/2 18:24
ぱんちゅぱんちゅおぱんちゅぱんちゅ RT @soh_alternative しまった今日ぱんつの日で...
2011/8/2 19:30
RT @chilime: …はっ。もしかして今日はパンツからハブを出す日…?(バニーにハニーを垂らす...
2011/8/2 19:39
←パンツの日だか何だか知らないけど、とりあえずそんなのとは無縁な人。
2011/8/2 19:40
【ぱんつの日記念】再度拡散します。出来心なんです…(>。<;) http://bit.ly/olYW...
2011/8/2 20:48
RT @yuro128: 【保存版】パンツ派閥リスト http://twitpic.com/5zf5...
2011/8/2 20:49
パンツの日だからツイッターのリア充が女の子からDMでパンツの画像送られてきてるとか考えたらツイッター...
2011/8/2 22:54
だれかパンツかぶりながらツイッターやってる人っているの?
2011/8/2 22:55
そういえばきょうパンツ晒した人ってドレくらいるだろう
2011/8/2 23:49
チーバくんのパンツ
2011/8/2 23:51
しまぱんmgmg
 

拍手




 == 朝 ==
気温はそうでもなかったのにね。
なんだか朝から暑く感じました。
通勤電車の京浜東北線はやたらと寒かったのに、田端を過ぎる頃は蒸し暑くて。。。
もっと効率的な空調の調節はできないのでしょうか?
 
 
== 昼 ==
仕事は比較的順調。
と、言うより途中から仕事が尽きました。
午後からほとんど遊んでました。
ごめんなさい。
 
でもー?
そのおかげでぇ?
メルマガを書く時間ができましたー☆-(ノ゚Д゚)八(゚Д゚ )ノイエーイ
 
と、言うわけでお待たせー(待っている人いないけどー)
第9号明日発刊だよー
これでもかってほど読者離れしてるけど、諦めないんだよー
おったのしみにぃ
 
 
== 夜 ==
んー、特に無いわねぇ。。。
久しぶりに「お試しかっ」を見た。
感想:特に無し

 
 
== 現在 ==
もうちょっとだけ起きてたら休もうと思います。
 
 
== 未来 ==
だいぶ、気分が落ち着いてきました。
もう大丈夫かな・・・
私は私だ。きっと。


== その他・所感 ==
東日本大震災から早4ヶ月なのね。
まだまだ、余波が大きいのでみんな忘れていないと思うけど、しっかり今後に生かさなきゃね。

 

拍手



ブログ内検索
カレンダー
06 2017/07 08
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 29
30 31
カウンター
最新コメント
最新トラックバック
プロフィール
+ハンドル+
y_ayamori(purple)
+職業+
IT系エンジニア
+すまい+
さいたま
バーコード
ブログパーツ
アバター
Copyright © アナログを愛するデジタル生活館 All Rights Reserved.
photo by Kun material by Atelier Black/White Template by Kaie
忍者ブログ [PR]