Skip to content

Instantly share code, notes, and snippets.

@marshall
Last active January 3, 2016 08:59
Show Gist options
  • Save marshall/8439684 to your computer and use it in GitHub Desktop.
Save marshall/8439684 to your computer and use it in GitHub Desktop.
A dirt simple CSV to sqlite db generator.
#!/usr/bin/env python
import codecs
import cStringIO
import csv
import os
import sqlite3
import sys
dbname = sys.argv[1] if len(sys.argv) > 1 else 'data'
if os.path.exists(dbname + '.db'):
os.unlink(dbname + '.db')
dbconn = sqlite3.connect(dbname + '.db')
cursor = dbconn.cursor()
params = []
def create_table(columns):
columns_with_types = ['%s text' % column for column in columns]
create_stmt = 'create table %s (%s)' % (dbname, ', '.join(columns_with_types))
global params
params = ','.join(['?'] * len(row))
cursor.execute(create_stmt)
def insert(row):
param_values = [unicode(v, 'utf-8', errors='ignore') for v in row])
cursor.execute('insert into %s values (%s)' % (dbname, params), param_values)
header = True
reader = csv.reader(codecs.EncodedFile(sys.stdin, 'utf-8', errors='ignore'))
for row in reader:
if header:
create_table(row)
header = False
continue
insert(row)
dbconn.commit()
dbconn.close()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment