将csv导入sqlite3插入失败
我正在尝试将将csv导入sqlite3插入失败,csv,sqlite,Csv,Sqlite,我正在尝试将nodes.csv文件导入sqlite3表- 这是我的密码- CREATE TABLE nodes ( id INTEGER PRIMARY KEY NOT NULL, lat REAL, lon REAL, user TEXT, uid INTEGER, version INTEGER, changeset INTEGER, timestamp TEXT ); .import nodes.csv nodes 我设法
nodes.csv
文件导入sqlite3表-
这是我的密码-
CREATE TABLE nodes (
id INTEGER PRIMARY KEY NOT NULL,
lat REAL,
lon REAL,
user TEXT,
uid INTEGER,
version INTEGER,
changeset INTEGER,
timestamp TEXT
);
.import nodes.csv nodes
我设法在没有主键指定的情况下导入了这个文件,但一旦我将主键添加到id字段,它就会出现以下错误
nodes.csv:xxx: INSERT failed: datatype mismatch
对于文件中的每一行,
xxx
是行号。我对sqlite3非常陌生,非常感谢您对此事的见解。CSV文件包含字符串。不能在整数列中插入字符串。
(通常为SQLite,但为整数主键。)
导入到临时表中,然后将数据复制到实际表中,同时将数字转换为实际数字:
CREATE TABLE nodes_temp(...);
.import nodes.csv nodes_temp
CREATE TABLE nodes(...);
INSERT INTO nodes
SELECT CAST(id AS INTEGER), CAST(lat AS REAL), ...
FROM nodes_temp;
因为我在python工作,熊猫提供了一种更简单的方法——信用卡
c_nodes = "CREATE TABLE nodes(id INTEGER PRIMARY KEY NOT NULL, lat REAL, lon REAL, user TEXT, uid INTEGER, \
version INTEGER, changeset INTEGER, timestamp TEXT);"
conn = sqlite3.connect('osm.db')
cursor = conn.cursor()
cursor.execute(c_nodes)
df_nodes = pd.read_csv('nodes.csv')
df_nodes.to_sql('nodes',conn, if_exists='append', index=False)