Import.py
Allikas: Lambda
#!/usr/bin/python
# esimene rida on spetsiaalne rida linuxis, mis ytleb,
#et linux kaivitagu python ja andku see programm ette
"""
See programm eeldab, et sul on juba olemas andmebaas data.db
tabeliga maintable kus yksteist tulpa
id,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10
Programm loeb etteantud failinime, eeldab, et failis on csv
kujul andmed ja siis loeb need andmed baasi sisse.
"""
# kasutame sqlite andmebaasi teeki,
# csv lugemise teeki ja systeemiabivahendeid
import sqlite3, csv, sys
# vota viimane failinimi kasurealt
filename = sys.argv[-1]
# vota yhendust baasiga
conn = sqlite3.connect("data.db")
# ava csv fail lugemiseks: eri viisidel python3 ja python2 jaoks
try:
csvfile = open(filename, encoding="utf8") # python3 variant
except: # jargmine haru taidetakse, kui eelmine ebaonnestus
csvfile = open(filename, "rb") # python2 variant
# ytle, kuidas csv failist aru saada:
# kasutusel mitu varianti delimiteri ja quotechari jaoks
myreader = csv.reader(csvfile, delimiter=',', quotechar='"')
# loe rida realt csv failist andmed, ehita iga rea jaoks
# lisamise-sql ja lisa see rida baasi
for row in myreader:
print(row)
# tyhi data list (et kui pole niipalju andmeid csv real)
data = [None,None,None,None,None,None,None,None,None,None]
# kopeeri loetud andmed realt data listi
n = 0
while n<len(row):
data[n]=row[n]
# jalle eraldi python2 ja python3 variandid tapitahtede jaoks
try:
data[n]=row[n].decode('utf-8') # python2
except:
data[n]=row[n] #python3
n=n+1
# tee insert-sql-lause, kus kysimargid ? asendatakse data listi elementidega
sql_insert= """insert into maintable (c1,c2,c3,c4,c5,c6,c7,c8,c9,c10)
values
(?,?,?,?,?,?,?,?,?,?) """
# nyyd pane insert lause kaima ja anna data ette
conn.execute(sql_insert,data)
# sulge csv fail
csvfile.close()
# ytle baasile, et koik ok ja andmed jaagu alles
conn.commit()
# katkesta yhendus
conn.close()