SQLite导入CSV至数据库表失败,请求排查问题原因
SQLite CSV导入失败排查与解决
以下是针对你遇到的导入问题的具体排查步骤和解决方案:
1. 移除.import命令后的分号
SQLite的点命令(以.开头的命令)不需要以分号结尾,你当前命令末尾的;会被识别为文件路径的一部分,导致无法找到正确的CSV文件。修改后的命令:
.import --csv --skip 1 c:/Business_Analytics/SQlite/Data/People.csv People
2. 修正主键设置(最可能的核心问题)
你的People表将Region设为主键,这意味着每个Region只能存在一条记录。如果CSV文件中存在同一个Region对应多个Person的情况,导入时所有重复Region的行都会被SQLite自动跳过,最终导致表中无数据。
建议修改表结构,使用复合主键或添加自增ID主键:
-- 删除原有空表 DROP TABLE People; -- 方案1:使用复合主键(避免同一人员在同一区域重复) CREATE TABLE People ( Person Text, Region Text, PRIMARY KEY (Person, Region) ); -- 方案2:添加自增ID主键(更灵活) CREATE TABLE People ( ID INTEGER PRIMARY KEY AUTOINCREMENT, Person Text, Region Text );
3. 验证CSV文件与路径
- 确认CSV文件确实存在于指定路径
c:/Business_Analytics/SQlite/Data/People.csv,检查文件名拼写、大小写(Windows系统不敏感,但尽量保持一致) - 打开CSV文件,确认:
- 第一行是表头(对应
--skip 1参数,会跳过第一行) - 字段分隔符确实是逗号,若字段内容包含逗号,需用双引号包裹(例如
"Smith, John",West)
- 第一行是表头(对应
4. 启用导入错误提示
执行导入前添加--verbose参数(SQLite 3.30.0及以上版本支持),可以查看导入时的详细错误信息,帮助定位问题:
.import --csv --skip 1 --verbose c:/Business_Analytics/SQlite/Data/People.csv People
完成以上修改后,重新执行导入命令,再用SELECT count(*) FROM People;验证数据是否成功导入。
内容的提问来源于stack exchange,提问作者Noah Hickman
相关产品推荐
相关产品推荐

