見出し画像

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を用いて実行したもの

power shellによるphythonコード実行

最初のlsコマンドによる確認時にはなかったtest.sqlが、コード実行後に追加されているのが判るだろう。

*上記中にに、./pとあるのはp.batというバッチを用いているもので、その内容は下記のようになっている。

@echo off
py csvArray.py

ヒストリー機能を使えばコマンドラインで、py csvArray.py と打つのも面倒ではないが、デバッグ回数が多くなると、バッチが重宝なものになる。

今回はとりあえずここまでとしておくが、次回はcsvを解析しながらsql生成の前半部分に関して詳述する予定でいる。

つづく

この記事が気に入ったらサポートをしてみませんか?