標籤:訪問 資料庫 區別 pen window 資料庫資料 bash spl app
常用指令記錄
Python常用操作:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 畫圖的字型問題
from pylab import mpl
mpl.rcParams[‘font.sans-serif‘] = [‘FangSong‘] # 指定預設字型
mpl.rcParams[‘axes.unicode_minus‘] = False # 解決儲存映像是負號‘-‘顯示為方塊的問題
# 顯示所有行列
pd.set_option("display.max_columns",None)
pd.set_option("display.max_rows",None)
# 輸出所有變數
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
# 畫圖x軸標籤傾斜
import pylab as pl
pl.xticks(rotation=45)
# 確定字串都是數字字元
data1[‘t‘] = data1[‘atx‘].str.isdigit()
data1 = data1[data1[‘t‘] == True]
# 串連postgres資料庫,讀取資料
conn = psycopg2.connect(database="", user="", password="", host="", port="")
cur = conn.cursor()
cur.execute("SELECT title FROM \"fd_content_interaction\";")
rows = cur.fetchone() //fetchone,fetchall,fetchmany(num=None) # 即取資料量大小
print(rows)
conn.commit()
cur.close()
conn.close() # 關閉資料庫的原因是,資料庫同時連結人數是有限的;資料庫資料用python讀取下來,jasonarray等格式轉換過來就是tuple裡的dict等格式
# 過濾Null 字元,0和None
a = list(filter(None, list1)) # Null 字元和None都是布爾值為0的
# 實現時間序
pd.date_range(‘20100101‘,periods=1000)
# 開啟檔案
with open("/tmp/foo.txt") as file:
data = file.read()
# 對多個row進行操作,返回到一個row中作為值
def my_test(a, b):
return a + b
df[‘value‘] = df.apply(lambda row: my_test(row[‘c1‘], row[‘c2‘]), axis=1)
hive常用操作:
hive
hive> show tables; ---顯示表;
hive> show databases; ---顯示資料庫,資料庫裡面有多個表;
hive> use brain; ---使用資料庫用 use;然後再使用show tables;查看裡面的資料表
hive> show tables;
hive> set hive.cli.print.header=true; ---顯示表的headers,即column名;
hive> select * from ttc_show where ttc_show.date_col = 20180601 and ttc_show.app_id = ‘ABCDEFG‘ and ttc_show.alg = ‘["related"]‘ limit 20;
常用sql:
SELECT name,country FROM Websites;
SELECT DISTINCT country FROM Websites; //選取country中去掉重複項的變數
SELECT * FROM Websites WHERE country=‘CN‘; //注意單雙引號,from後的地址用雙引號,where後的等號用單個等號,常值內容用單引號,數字內容不用引號
Select * from emp where sal > 2000 or comm > 500; //或者用and
Select * from emp where comm is null;
Select * from emp where sal between 1500 and 3000; //數值型,字元型都有between,字元型基於首字母排序
Select * from emp where sal in (5000,3000,1500);
SELECT * FROM Websites WHERE alexa > 15 AND (country=‘CN‘ OR country=‘USA‘);
SELECT * FROM Websites ORDER BY alexa; //按某一列排序,可以按多列排序,多列時先按第一指定列排序,再按第二等等
INSERT INTO Websites (name, url, alexa, country) VALUES (‘百度‘,‘https://www.baidu.com/‘,‘4‘,‘CN‘); //id列不用輸入任何欄位,他是自動更新的
UPDATE Websites SET alexa=‘5000‘, country=‘USA‘ WHERE name=‘菜鳥教程‘; //更新覆蓋資料,執行沒有 WHERE 子句的 UPDATE 要謹慎,再謹慎!!!!沒有where會將所有行的這一列修改
DELETE FROM Websites WHERE name=‘百度‘ AND country=‘CN‘;
SELECT * FROM Websites WHERE name LIKE ‘G%‘; //選取以G為開頭的模糊查詢
SELECT * FROM Websites WHERE name LIKE ‘%k‘; //選取以k為尾的模糊查詢
SELECT * FROM Websites WHERE name LIKE ‘%oo%‘; //選取含有oo字元的
SELECT * FROM Websites WHERE name NOT LIKE ‘%oo%‘; //選取不含有oo字元的
select * from username where 使用者名稱 like ‘段_%‘ -- 會查出來段煜 段鑫
‘%a‘ //以a結尾的數 ‘a%‘ //以a開頭的資料 ‘%a%‘ //含有a的數 ‘_a_‘ //三位且中間字母是a的
‘_a‘ //兩位且結尾字母是a的 ‘a_‘ //兩位且開頭字母是a的
SELECT * FROM Websites WHERE name REGEXP ‘^[GFs]‘; // 選取 name 以 "G"、"F" 或 "s" 開始的所有網站
SELECT * FROM Websites WHERE name REGEXP ‘^[A-H]‘; //選取 name 以 A 到 H 字母開頭的網站
SELECT * FROM Websites WHERE name IN (‘Google‘,‘菜鳥教程‘); // 選取 name 為 "Google" 或 "菜鳥教程" 的所有網站
SELECT * FROM Websites WHERE alexa NOT BETWEEN 1 AND 20;
SELECT column_name(s)
FROM table1 INNER JOIN table2 ON table1.column_name=table2.column_name; //選取兩個檔案中在某一列相匹配的項
LEFT JOIN 和 RIGHT JOIN 存在的意義就是select的時候可能會有左(右)邊存在而另一邊不存在的特定列,此時將LEFT(RIGHT)的列留下,另一邊沒有匹配內容的賦值為null即可
注意:搜尋時,String只能用單引號,檔案名稱用雙引號或不用
常用linux指令:
使用 man 命令來查看各命令的使用文檔
u 取消操作
cat 擷取檔案內容
cat合并檔案
$ cat file1.txt file2.txt > file.txt 可以讀入任意多個檔案
使用>>將文字資料流將檔案添加到另外一個檔案的末尾
$ cat file1.txt >> file2.txt
grep 按條件尋找搜尋,加|與檔案隔開
dd 刪除
d5d 刪除5行
cp dir dir複製檔案到新的檔案夾
cp -r dir dir 複製檔案夾下所有檔案到新的目錄
mv dir dir 移動檔案,並命名為file2
hadoop -put dir1 dir2語句是將dir1上資料put上dir2(hdfs)
查看hadoop上檔案,檔案內容:
hadoop fs -ls /dir/file
hadoop fs -cat /dir/file | head -10 (file為壓縮檔需要解壓縮,否則為亂碼)
從hdfs上下載檔案到本地:-get
Linux中` `、$、$( ) 、${ } 區別:
$( )中放的是命令,相當於` `,例如todaydate=$(date +%Y%m%d)意思是執行date命令,返回執行結果給變數todaydate,也可以寫為todaydate=`date +%Y%m%d`;
${ }中放的是變數,例如echo ${PATH}取PATH變數的值並列印,也可以不加括弧比如$PATH。
put操作時,指定的檔案路徑不存在,不會自動建立路徑,需要建立路徑mkdir;指定路徑後,應該是會寫入一個檔案,而這個檔案是不用事先建立的(比如事先建立一個目標.txt文檔)
解壓檔案:tar -cxvf ${date}.tar.gz 檔案解壓後放當前檔案夾,名字和tar檔案名稱字一樣
壓縮檔:tar -zcvf finalData.tar.gz finalData/
hadoop fs -getmerge 操作只能先放到本地檔案夾,然後put上hdfs
查看正在啟動並執行程式:ps -ef | grep ks_collect_data
firedata 30458 88548 0 09:42 pts/10 00:00:00 sh ks_collect_data.sh 20180813 20180826
kill這個任務:$ kill -9 30458
kill在叢集上的任務 : hadoop job -kill job_1524660075674
將本伺服器檔案傳到另一個伺服器:scp 211.100.28.190:/dir/file /dir 然後需要再輸入密碼
迴圈對多個檔案夾進行操作:
for file in /home/hustyangju
do
done
ctrl+c 停止運行程式,ctrl+z,任務維持掛起並沒有結束,可以使用fg/bg操作繼續前台或背景任務,fg命令重新啟動前台被中斷的任務,bg命令把被中斷的任務放在後台執行.
從遠程伺服器下載檔案到本地:sz /dir/file 或者切盤到這個檔案夾 sz file 即可
記錄日誌:/dir/test.sh > /dir/test.log 2>&1 &
nohup java -jar demo2.jar >test.out 2>&1 當賬戶退出或終端關閉時,程式仍然運行
較大檔案,若在遠程伺服器上互動操作比較麻煩,可以tail -n 10000 file>file_sample 然後sz 這個sample下來在window上操作,將程式調試好再拖入伺服器運行
wc :統計指定檔案中的位元組數、字數、行數,並將結果顯示輸出。-c 統計位元組數;-l 統計行數;-w 統計字數;-m 統計字元數。
組合使用時輸出結果的列的順序和數目不受選項的順序和數目的影響。輸出結果順序:行數 字數 位元組數 檔案名稱
tail -f click 查看是否在寫入資料
crontab -l 查看正在啟動並執行定期執行程式; crontab -e 相當於vim,然後編輯即可
du -h filename/ 查看filename檔案大小,ll -h 查看檔案夾下所有檔案的詳細資料
表示時間:date=`date -d "+1 day $startdate" +%Y%m%d`
電腦常識:
編碼:
在電腦記憶體中,統一使用Unicode編碼,當需要儲存到硬碟或者需要傳輸的時候,就轉換為UTF-8編碼。
用記事本編輯的時候,從檔案讀取的UTF-8字元被轉換為Unicode字元到記憶體裡,編輯完成後,儲存的時候再把Unicode轉換為UTF-8儲存到檔案。
ip地址是數字組成的,不方便記憶,所以有了網域名稱,通過網域名稱地址就能找到ip地址
http://zhidao.baidu.com 這是網域名稱,一個ip上可以有多個網域名稱
http://168.103.123.465 這是IP
linux:
SSH是安全殼層協議,為 Secure Shell 的縮寫,為遠程登入工作階段和其他網路服務提供安全性的協議。Xshell軟體支援ssh協議,允許你遠端存取。
git bash是Windows下的命令列工具,方便在windows下使用git命令的類比終端;git shell是安裝了git的shell,bash是shell的一種。
電腦常用指令