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()