-
Notifications
You must be signed in to change notification settings - Fork 6
/
csv2sqlite.py
executable file
·41 lines (33 loc) · 976 Bytes
/
csv2sqlite.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/usr/bin/env python
import os
import sys
import csv
import json
import sqlite3
import matplotlib.pyplot as plt
import numpy as np
def dbExecute(c, sqlCmd, args=None):
# print(sqlCmd)
if args is not None:
# print(args)
c.execute(sqlCmd, args)
else:
c.execute(sqlCmd)
if __name__ == '__main__':
if len(sys.argv) < 4:
print('Usage: {0} <csv-input-filename> <sqlite-output-filename> <sqlite-table-name>'.format(__file__))
csvFilename = sys.argv[1]
dbFilename = sys.argv[2]
tableName = sys.argv[3]
with open(csvFilename, 'rU') as csvFile:
cr = csv.reader(csvFile)
colNames = cr.next()
with sqlite3.connect(dbFilename) as db:
c = db.cursor()
createCmd = 'CREATE TABLE {0} ({1})'.format(tableName, ', '.join(colNames))
dbExecute(c, createCmd)
for row in cr:
insertCmd = 'INSERT INTO {0} VALUES ({1})'.format(
tableName, ','.join(['?'] * len(row))
)
dbExecute(c, insertCmd, [None if x == '' else x for x in row])