pygrametl是乙個python的package用於etl(extract-transform-load )
簡例import mysqldb
from pygrametl.datasources import sqlsource
conn = mysqldb.connect(host="localhost", user="root", passwd="123456", db="ustcck", charset="utf8")
sql = "select * from student;"
newnames = 'id', 'name', 'gender'
resultssource = sqlsource(connection=conn, query=sql, names=newnames)
print type(resultssource)
for row in resultssource:
print row
print row["name"]
1.安裝以及安裝測試
$ pip install pygrametl
>>> import pygrametl
>>>
ok了!
2.pygrametl 支援多種資料來源
'backgroundsource', 'csvsource', 'crosstabbingsource', 'dictreader', 'dynamicforeachsource', 'filteringsource', 'hashjoiningsource', 'joiningsource', 'mergejoiningsource', 'process', 'processsource', 'queue', 'roundrobinsource', 'sqlsource', 'transformingsource', 'typedcsvsource', 'unionsource'..........
如:(1)
import psycopg2
import pygrametl
from pygrametl.datasources import sqlsource
conn = psycopg2.connect(database="db", user="dbuser", password="dbpass")
sql = "select * from table;"
resultssource = sqlsource(connection=conn, query=sql)
(2)import pygrametl
from pygrametl.datasources import csvsource
resultssource = csvsource(csvfile=open('resultsfile.csv', 'r', 16384), delimiter=',')
3.dimension(維度)
pygrametl 提供了資料倉儲維度互動,提供了乙個在table中執行增刪改查操作的介面。
使用dimension兩步走:
(2)必須指定table的名字,key以及表中其他的列
下面是乙個使用dimension將相應的資料的插入到對應維度的操作的例子:(假設table已經存在,維度有'productid', 'name', 'category', 'price')
import psycopg2
import pygrametl
from pygrametl.tables import dimension
4.facttable。給個例子你就知道了 例:
三步走:
(1)建立乙個connection
(3)建立 facttable
5.bulk loading(大面積載入資料)
三個類可以用於bulk loading: bulkdimension, bulkfacttable, and cachedbulkdimension
#mysqldb
def mysqlbulkloader(name, attributes, fieldsep, rowsep, nullval, filehandle):
global connection
cursor = connection.cursor()
sql = "load data local infile '%s' into table %s fields terminated by '%s' lines terminated by '%s' (%s);" % \
(filehandle, name, fieldsep, rowsep, ', '.join(attributes))
cursor.execute(sql)
引數含義:parameters
name – 表名
attributes –屬性序列列表
fieldsep – 屬性分隔符
rowsep – row分隔符
nullval – null的替代
filehandle – 檔名或者檔案物件
使用virtualenv建立獨立的Python環境
virtualenv是 python的沙盒環境,主要解決以下問題 yum groupinstall development tools yum y install zlib devel bzip2 devel openssl devel ncurses devel sqlite devel read...
使用virtualenv搭建獨立的Python環境
virtualenv可以搭建虛擬且獨立的python環境,可以使每個專案環境與其他專案獨立開來,保持環境的乾淨,解決包衝突問題。一 安裝virtualenv virtualenv實際上是乙個python包,所以我們可以用easy install或者pip安裝。下面介紹在centos系統上的安裝方法。...
itemcf的hadoop實現優化 Python
原始資料如下 u1 a,d,b,c u2 a,a,c u3 b,d u4 a,d,c u5 a,b,c 計算公式使用 sim u i u j u i u j 其中 u i u j u i u j u i u j 原始的hadoop實現需要5輪mr,優化後只需要兩輪就可以完成。之前的輪數過多,主要在於...