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