SQLite导入csv文件

发布于:2022-11-01 ⋅ 阅读:(653) ⋅ 点赞:(0)

先上结论:

        出现INSERT failed: datatype mismatch:如果csv文件有中文,那么就不影响,大概是中文变问号的问题,如果用python来做,不会有问题。确定是这个情况的方法是:select * from 表名,如果出现中文为问号,则是。

         出现如下报错

是多次导入同一csv文件的原因,无视即可。

        在导入csv文件前在sqlite环境下输入pragma table_info(faqs_scores);并确认返回的数据类型不是全为TEXT(除非这是你期望的),否则输入delete from 表名以清空表中数据,然后检查models文件,0001_initial.py文件,然后重新导入。

事件:

python web开发基础教程(Django版 微课版)第81页,即4.4.1~4.4.2。

scores.csv文件放在项目文件中与manage.py同级目录下,SQLite工具包配置环境变量(我直接把三个exe放到了python的Scrpts里)。报错如下

sqlite> .separator ','#实测可以不打引号或改为双引,或将csv文件中的","改为"|"就不用打这一行
sqlite> .import scores.csv faqs_scores
scores.csv:1: INSERT failed: datatype mismatch

        我尝试了删除db.sqlite3文件,然后用[1]中情景一的方式重新迁移了数据库,然后重新导入csv文件,无效。

        然后我用[2]中方式清空表并重新导入csv文件,无效。

        使用select * from faqs_scores;查看表,发现导入成功但中文问号。

        在python shell环境下查看表,中文正常显示。

[1]:Django开发—如何重置migration_卓修武的博客-CSDN博客_django 重新migrate

[2]:sqlite3清空表内容 - 知乎 

后记:啊,解决完问题之后大部分的过程都忘了,代码也没保存,bug还不能复现,所以就酱。


网站公告

今日签到

点亮在社区的每一天
去签到