pandasライブラリを使ってcsvからsqlを生成する その2
今回は実際に操作しながら、ここで用いたphythonプログラムの意味を考えてみることにしたい。
その前に、前回はnoteにソースコードを記述する機能があることを知らないためソースのアップロード機能を使用したことを断っておく。
ソースコードが記事中に書かれていないのは、記事中で説明を書くのも困難だとつくづく思わされたものである。
その意味もあって、以下にソースコードを掲載しておく。
import pandas as pd
## sqlの前方部分を作成
def sqlSf(csvfile,table):
array = pd.read_csv(csvfile, header=0)
header = array.columns
n = 0
sql = "INSERT INTO " + table + "("
for clmn in header:
if n == 0:
sql += clmn
else:
sql += ", " + clmn
n += 1
sql += ") values ("
return sql
## sqlの前方部分に実際に入力するカラムの内容を結合して
## 一塊の文字列(files)にする
def sqlf(csvfile,table):
sqlS = sqlSf(csvfile,table)
array = pd.read_csv(csvfile).values.tolist()
files = ""
for tmp in array:
sqlE = ""
n = 0
for dat in tmp:
if n == 0:
sqlE += "'" + str(dat) + "'"
else:
sqlE += ", " + "'" + str(dat) + "'"
n += 1
sql = sqlS + sqlE + ");"
files += sql + "\n"
return files
## 最初の処理
print("sqlファイルを作成します。")
files = sqlf("test.csv","table")
f = open('test.sql', 'w')
f.write(files)
f.close()
print("sqlファイルを作成しました。")
*前回も追加する形でこのコードを書いている。
それでは、このコードを実際に実行してみる。
下記は対象のコードをpower shellを用いて実行したもの
最初のlsコマンドによる確認時にはなかったtest.sqlが、コード実行後に追加されているのが判るだろう。
*上記中にに、./pとあるのはp.batというバッチを用いているもので、その内容は下記のようになっている。
@echo off
py csvArray.py
ヒストリー機能を使えばコマンドラインで、py csvArray.py と打つのも面倒ではないが、デバッグ回数が多くなると、バッチが重宝なものになる。
今回はとりあえずここまでとしておくが、次回はcsvを解析しながらsql生成の前半部分に関して詳述する予定でいる。
この記事が気に入ったらサポートをしてみませんか?