CSVファイルはEXCELから吐き出すこともできるので、データベースへの書込みはこのルートでほとんど賄えます。 CSVファイルの内容 今回はデータベースにpostgreSQLを使用して、postgreSQLとのインターフェースにはpsycopg2を使っています。SQLを作る2つの関数とそのSQLを実行する2つの関数で構成し、CSVファイルの読み込みはpandasのread_csv関数を使って1行で達成してます。 データベースに蓄積された内容は以下の通り。CSVファイルの入出力にはpandasが便利!
2017-10-10,1.,Almost Like Praying (feat. Artists for Puerto Rico),Lin-Manuel Miranda
2017-10-10,2.,Thunder,Imagine Dragons
2017-10-10,3.,Feel It Still,Portugal. The Man
2017-10-10,4.,Perfect,Ed Sheeran
2017-10-10,5.,Look What You Made Me Do,Taylor Swift
import psycopg2,sys
import pandas as pd
def SQL_createTable() :
sql = 'CREATE TABLE itunes'
sql = sql + '(date DATE,'
sql = sql + 'rank SMALLINT,'
sql = sql + 'song VARCHAR(100),'
sql = sql + 'artist VARCHAR(30));'
return sql
def SQL_insertTable() :
sql = 'INSERT INTO itunes ('
sql = sql + 'date,'
sql = sql + 'rank,'
sql = sql + 'song,'
sql = sql + 'artist)'
sql = sql + ' VALUES (%s,%s,%s,%s);'
return sql
def initial_DB(SQL) :
try :
conn = psycopg2.connect(database="ddddd", user="uuuuu", password="xxxxx", host="127.0.0.1", port="0000")
cur = conn.cursor()
cur.execute(SQL)
conn.commit()
except psycopg2.OperationalError as e:
print('Unable to connect!\n{0}').format(e)
sys.exit(1)
finally:
if conn:
conn.close()
def csv2DB(SQL,csvDF) :
try :
conn = psycopg2.connect(database="ddddd", user="uuuuu", password="xxxxx", host="127.0.0.1", port="0000")
for index in range(len(csvDF)) :
cur = conn.cursor()
cur.execute(SQL,(
csvDF.at[index,'date'],
csvDF.at[index,'rank'],
csvDF.at[index,'song'],
csvDF.at[index,'artist']))
conn.commit()
except psycopg2.OperationalError as e:
print('Unable to connect!\n{0}').format(e)
sys.exit(1)
finally:
if conn:
conn.close()
if __name__ == '__main__':
createTable = True
if createTable :
SQL = SQL_createTable()
initial_DB(SQL)
csvDF = pd.read_csv('csv/file.csv',sep=',',names =('date','rank','song','artist'))
SQL = SQL_insertTable()
csv2DB(SQL,csvDF)
postgresql => select * from itunes ;
date | rank | song | artist
------------+------+-----------------------------------------------------+--------------------
2017-10-10 | 1 | Almost Like Praying (feat. Artists for Puerto Rico) | Lin-Manuel Miranda
2017-10-10 | 2 | Thunder | Imagine Dragons
2017-10-10 | 3 | Feel It Still | Portugal. The Man
2017-10-10 | 4 | Perfect | Ed Sheeran
2017-10-10 | 5 | Look What You Made Me Do | Taylor Swift
(5 行)
project_1=>
2017年10月22日日曜日
CSVファイルをPostgreSQLデータベースに書込む
投稿日 10月 22, 2017
Tags
関連記事
登録:
コメントの投稿 (Atom)