安全的将excel导入sqlite3的解决方案

最近在做一个小项目时,需要把一个excel中的数据保存到sqlite3数据库中以备后用,表中有字符也有数字,要用到特定的数据类型方便后续使用,参照网上的方法,将excel文件转换为csv文件后,在导入数据时发现数据库提示无法转换为特定类型:

创建表的语句为:

create table information(id integer primary key autoincrement,Date text,Sour text,Dest text,Stime text,Dtime text,Cost integer,Ptime integer,Weight integer);

这时候提示的是数据类型不匹配,其实这只是警告,这个时候去查找数据,这个表中是有数据的,但是尤其在做项目的时候,要尽可能避免任何意外,所以我们用一种安全的方法创建数据库。

删除之前创建的表

这次我们不定义表结构,采用直接导入的方法

直接导入倒是成功了,不过这里看到的表结构与我想要的不太一样,全是text类型了,但我要有各种不同类型的数据。这时候看到了一片文章,受到启发。我可以试试把这个导入进来的新表(即info表)重新导入到我想要的表结构的那个表(即information)中

然后构造了如下语句:

insert into information(id,Date,Sour,Dest,Stime,Dtime,Cost,Ptime,Weight) select ID,Date,Sour,Dest,Stime,Dtime,Cost,Ptime,Weight from info;

这次发现完全没有任何报错,因为这次在数据库内部自动进行了数据类型转换。接下来就可以安全的使用数据库了

 

总结:

其实把excel导入sqlite3步骤很简单

第一步:把excel保存为csv格式的文件,编码方式选为utf-t

第二步:创建数据库,并设置以点号作为分隔符:.separator ','

第三步:直接导入csv文件,任意名称的表明即可:.import information1.csv information

第四步:按照自己的要求创建相应数据类型的表结构:

create table information(id integer primary key autoincrement,Date text,Sour text,Dest text,Stime text,Dtime text,Cost integer,Ptime integer,Weight integer);

第五步:把前一个表的内容导入到这张新表:

insert into information(id,Date,Sour,Dest,Stime,Dtime,Cost,Ptime,Weight) select ID,Date,Sour,Dest,Stime,Dtime,Cost,Ptime,Weight from info;

第六步:删除前一个表

drop table info;

 

转载于:https://www.cnblogs.com/zlgxzswjy/p/6094920.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值