pygrametl的使用 python的ETL包

2021-07-24 16:25:36 字數 2557 閱讀 7720

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,優化後只需要兩輪就可以完成。之前的輪數過多,主要在於...