目的:将EXCEL表中的数据改入SQLITE数据库中
工具:SQLite Expert Professional。
一、通过CSV文件向SQLite数据库表追加记录。
(一)用Excel制作CSV格式数据文件。
1、按照SQLite数据库中数据表字段,Excel数据表中制作与之其相同的表列。
2、Excel数据表行相当于数据库表中的行,录入数据。
3、将Excel数据表另存为CSV格式文件。
注意:使用Excel编辑含有身份证号码CSV文件,需要采用“数据导入”方法,以文本格式导入到Excel数据表中,否则身份证号码识别为数字,并以科学计数法表示,保存后无法恢复为身份证号。【加载或转换数据皆可】
4、CSV文件用文本编辑器打开。
以下第5条说明只针对自己编写的个性小程序:
5、针对我自己编写的小程序而言,可以使用程序自动输出的”全部劳动纠纷统计.CSV"文件作模板,用Excel——数据——导入CSV/文本(防止身份证号由文本格式变成数字格式),打开此文件并编辑 :
(1)追加数据行、变更数据。
(2)改造Excel数据表的列名,与SQLite数据库对应的表字段名相符。
注:我自己所编程序自动生成的CSV文件,因统计需要在原SQLite数据库表字段名的基础上,又新生成临时列:如:
申请合计 | 裁定合计 | 案件数量 | 结案数量 | 付清案件数量 | 年度 |
,并不原数据库表列,所以要删除。
(3)完成后另外为CSV文件格式。
(二)应用SQLite Expert Professional导入数据
注意:Encoding选项选择UTF-8,否则CSV文件含有汉字,导入后变成????符号。
下图如果Options选项,勾选Delete existing data实现删除原记录导入新记录;否则追加记录。
勾选Fielld names on fist row选项,CSV文件第一行为字段名,否则第一行开始为记录文件。
二、SQLite数据更新
(一)修改原有记录
(1)更新指定字段名:UPDATE 表名 SET 字段名1=字段值1,字段名2=字段值2 where 条件
(2)多行语句用分号分隔。
(3)可使用Excel数据表、记事本两个工具构造多行语句。
例:因为用python写的程序语句中,申请统计的状态是True,不是TRUE,如果大小写不一致,内置判断条件无法正常执行。下面语句将全部记录的“申请统计”、“裁定统计”、“结案”值更新为“True"。注意命令的字符、字母的全角、半角。
UPDATE t_labordispute SET 申请统计 = 'True' where 申请统计 = 'TRUE'
UPDATE t_labordispute SET 裁定统计 = 'True' where 裁定统计 = 'TRUE'
UPDATE t_labordispute SET 结案 = 'True' where 结案 = 'TRUE'
例2:更新”综合申请“字段值。
UPDATE t_labordispute SET 申请失业金损失 = 0 ,综合申请= 150158 where 申请人证号='10319940809' and rowid>318 ;
UPDATE t_labordispute SET 申请失业金损失 = 0 ,综合申请= 150158 where 申请人证号='12231986081' and rowid>318 ;
UPDATE t_labordispute SET 申请失业金损失 = 0 ,综合申请= 150158 where 申请人证号='102197910152711' and rowid>318 ;
(二)INSERT INTO追加一条或多条记录
INSERT INTO [t_labordispute]([rowid], [laborid], [申请人姓名], [申请人证号], [争议初始日期], [提请争议日期], [争议结束日期], [法规收案号], [发生地区], [申请人所在公司], [被申请人], [被申请人证号], [经济补偿金申请], [申请工资], [申请加班工资], [申请无合同双倍工资], [申请生活费], [申请年休假], [申请工伤待遇], [申请赔偿金], [申请社保], [申请失业金损失], [综合申请], [裁定经济补偿金], [裁定工资], [裁定加班工资], [裁定无合同双倍工资], [裁定年休假], [裁定工伤待遇], [裁定赔偿金], [裁定失业金损失], [裁定生活费], [裁定社保费], [裁定综合], [诉讼编码], [案件经办律师], [解决方式], [结果性质], [原始申请人], [非担责方证号], [行政文号], [申请统计], [裁定统计], [结案], [是否给付], [诚信等级], [经典案例], [卷宗号], [案件关键词], [备注]) VALUES(333, 333, '王在', '18107215812', '1899-12-30', '1899-12-30', '1899-12-30', '美好', '河南省州市', 'DDS', '有限公司', 'SDDD', 0, 41640, 0, 0, 0, 0, 0, 0, 0, 24000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'M26', '王双军', '', '公司担责', '王在', '1810721581212', '92号', 1, 0, 0, '', 'D', 'N', 'None', '失业赔偿及拖欠工资', 'None');
用INSERT INTO追加记录很构造语句很不方便(字符型字段值加引号费时间),建议使用SQLite Expert Fessional导入CSV文件方式。
INSERT INT语法:SQLite Expert Fessional ——Import/Export——数据传输向导Data Transfer Wizard——Destination——SQLite Database或SQL Script。
(三)问题:SQLite数据库的时间总是1899-12-30
1、日期格式:SQLite的日期格式为2020-07-30,不能识别Excel数据表时间格式2020-7-30,导入到SQLite中后变为1899-12-30。
2、逻辑型字段值:SQLite的布尔型数据值为1或0,而不是True或False。
UPDATE t_labordispute SET 争议初始日期 ='2020-07-30',提请争议日期='2020-07-30' where laborid=384 ;
(三)数据备份
1、表备份:SQLite Expert Professional——选中数据表——data标签——在数据区右键弹出菜单——导出到Excel表或其它格式。
2、数据库备份。