我正在尝试将制表符分隔文件('pageviews')导入sqlite('empty_db.sqite'),但继续收到错误消息'OperationalError:near“)”:语法错误'。这是我到目前为止的代码:
import sqlite3
import pandas as pd
import csv
con = sqlite3.connect('empty_db.sqlite')
con.execute('CREATE TABLE tbl(Field1 TEXT, Field2 TEXT, Field3 INTEGER, Field4 INTEGER);')
csvfile = open('pageviews', 'r', encoding = 'utf8')
csvReader = csv.reader(csvfile)
header = next(csvReader)
for rec in csvReader:
con.execute("INSERT INTO tbl VALUES %s" %str(tuple(rec)))
csvfile.close()
con.commit()
con.close()
这是我的TSV文件的前五行:
aa Main_Page 1 0
aa.d Main_Page 1 0
aa.m Main_Page 1 0
ab 1942 1 0
ab 1990 1 0
非常感谢任何帮助 - 谢谢!
答案 0 :(得分:0)
您使用pandas
标记标记了您的问题,但您没有使用它...
如果您想使用pandas,它可能看起来更容易:
import sqlite3
import pandas as pd
In [288]: con = sqlite3.connect('d:/temp/empty_db.sqlite')
In [289]: fn = r'D:\temp\.data\123.csv'
In [290]: df = pd.read_csv(fn, delim_whitespace=True, header=None).add_prefix('col')
In [291]: df
Out[291]:
col0 col1 col2 col3
0 aa Main_Page 1 0
1 aa.d Main_Page 1 0
2 aa.m Main_Page 1 0
3 ab 1942 1 0
4 ab 1990 1 0
In [292]: df.to_sql('tbl', con, index=False)
SQLite的:
D:\temp>sqlite3 empty_db.sqlite
SQLite version 3.10.1 2016-01-13 21:41:56
Enter ".help" for usage hints.
sqlite> .header on
sqlite> .mode columns
sqlite> select * from tbl;
col0 col1 col2 col3
---------- ---------- ---------- ----------
aa Main_Page 1 0
aa.d Main_Page 1 0
aa.m Main_Page 1 0
ab 1942 1 0
ab 1990 1 0
从SQLite回读:
In [293]: x = pd.read_sql('select * from tbl', con)
In [294]: x
Out[294]:
col0 col1 col2 col3
0 aa Main_Page 1 0
1 aa.d Main_Page 1 0
2 aa.m Main_Page 1 0
3 ab 1942 1 0
4 ab 1990 1 0