あるユーザのテーブルの中で、特定の列名を持つテーブルを検索したい時の方法。
PostgreSQL編はこちら↓
www.k-hitorigoto.online
- Oracleの場合
- SQLServerの場合
あるユーザのテーブルの中で、特定の列名を持つテーブルを検索したい時の方法。
PostgreSQL編はこちら↓
www.k-hitorigoto.online
お台場ガンダムが展示終了したというのを聞いていましたが、その後どうなっているのか気になったため、見に行ってみました。
本日のお供はGM1+20mm
周辺には柵が設けられており、近づけないようになっていましたが、ガンダム自体はそのままの様で。
pythonで、1から10まで、みたいな繰り返しをどうやるかわからなかったので記録する。
以下のケースで迷ったため。
4. その他の制御フローツール — Python 2.7.18 ドキュメント
#!/usr/bin/python # -*- coding:utf8 -*- # range([始めの数,]繰り返しの数[,増分] # 始めの数を指定しないと、0からスタート # 増分を指定しないと、1ずつ増える # range(0,10,1)と、range(10)は同じで、0から9まで1ずつ増える(計10回の繰り返し) # range(1,10,2)は、1から9まで、2個飛ばし # ↑だと、10回繰り返しではないけど。0スタート、1増の時の繰り返し数、になるのかな... # 0 1 2 3 4 5 6 7 8 9 for i in range(10): print i for i in range(0,10,1): print i # 1 3 5 7 9 for i in range(1,10,2): print i
Excelで、アクティブブックの可視シート名を列挙する方法。結構使うけど忘れがちなのでメモ。
Option Explicit Sub 可視シート名を列挙する() Dim sheetCnt As Integer Dim i As Integer Dim tmpSheet As Worksheet sheetCnt = ActiveWorkbook.Worksheets.Count For i = 1 To sheetCnt Set tmpSheet = ActiveWorkbook.Worksheets(i) If tmpSheet.Visible = True Then Debug.Print tmpSheet.Name End If Set tmpSheet = Nothing Next End Sub
対象となるブックと、実行結果は以下の通り。可視シートのみシート名が出力されます。
Webページを取得して操作する方法に、Seleniumというのがあるのを最近知りました。
Selenium
テーブルが使われたWebページから内容を取得したかったので、その方法を調べました。
Seleniumはいろんな言語からアクセスすることが出来るようですが、今回はPythonを使ってみました。
対象となるページは以下のような感じ。
<html> <head></head> <body> <table class="table_desu"> <tr> <th>No</th><th>品目</th><th>価格</th> </tr> <tr> <td>1</td><td>りんご</td><td>150</td> </tr> <tr> <td>2</td><td>みかん</td><td>120</td> </tr> <tr> <td>3</td><td>ぶどう</td><td>200</td> </tr> </table> </body> </html>
こちらは、Python+Seleniumで上記Webページにアクセスし、テーブルの内容を先頭行をのぞいて取得し、標準出力に表示する例です。
テーブル内容を取得する方法がJavascriptみたいで親近感わきましたが、実はもっとスマートなやり方があるのかしら...
#!/usr/bin/python # -*- coding: utf-8 -*- import selenium from selenium import webdriver from selenium.webdriver.common.by import By from pyvirtualdisplay import Display BASE_URL = "http://hoge.fuga/" try: display = Display(visible=0, size=(800, 600)) display.start() driver = webdriver.Firefox() driver.implicitly_wait(30) # Webページへアクセス driver.get(BASE_URL) driver.implicitly_wait(15) # テーブル内容取得 tableElem = driver.find_element_by_class_name("table_desu") trs = tableElem.find_elements(By.TAG_NAME, "tr") # ヘッダ行は除いて取得 for i in range(1,len(trs)): tds = trs[i].find_elements(By.TAG_NAME, "td") line = "" for j in range(0,len(tds)): if j < len(tds)-1: line += "%s\t" % (tds[j].text) else: line += "%s" % (tds[j].text) print line+"\r\n" except: print traceback.format_exc() finally: if driver is not None: driver.quit() if display is not None: display.stop()
実行結果は以下の通り
1 りんご 150 2 みかん 120 3 ぶどう 200
昨日のPowershellのshellコマンドバージョン
昨日に引き続き、対象のデータは以下のような感じです。
a.csv 日付,品目,価格 2017/3/3,りんご,150 2017/3/3,みかん,130 2017/3/4,キウイ,200 b.csv 日付,品目,価格 2017/3/3,みかん,130 2017/3/4,キウイ,200 2017/3/4,バナナ,200 2017/3/4,ぶどう,400 c.csv 日付,品目,価格 2017/3/4,ぶどう,400 2017/3/5,りんご,150 2017/3/5,キウイ,200
head -1 `ls *.csv | head -1` && tail -q -n +2 *.csv | sort | uniq
'&&'より左側は、ヘッダ行を切り出すための処理、'&&'の右側は、ヘッダ行を除いてソートして、マージする処理です。
Powershellはヘッダ周りをうまいことやってくれたけど、こちらはそうもいかないので、力業でやってみました。
Powershellを使って、CSVファイルの内容の重複を除いて、結合したくなったのでメモ。
対象のファイルは以下のような、一部内容に重複のあるファイル。
a.csv 日付,品目,価格 2017/3/3,りんご,150 2017/3/3,みかん,130 2017/3/4,キウイ,200 b.csv 日付,品目,価格 2017/3/3,みかん,130 2017/3/4,キウイ,200 2017/3/4,バナナ,200 2017/3/4,ぶどう,400 c.csv 日付,品目,価格 2017/3/4,ぶどう,400 2017/3/5,りんご,150 2017/3/5,キウイ,200
内容の重複を除いて、結合するには以下のようにすると良し。
Get-ChildItem *.csv | ForEach-Object{Import-Csv $_} | Sort-Object -Property 日付,品目,価格 -Unique
結合結果は以下のようになります。Export-CSVでCSVファイルとして出力できます。
日付 品目 価格 ---- ---- ---- 2017/3/3 みかん 130 2017/3/3 りんご 150 2017/3/4 キウイ 200 2017/3/4 バナナ 200 2017/3/4 ぶどう 400 2017/3/5 キウイ 200 2017/3/5 りんご 150