Navicat实现excel数据入库

    xiaoxiao2025-06-14  26

    数据库的导入的工具实现

         最近的需求是把excel模板中的数据导入到数据库对应表中,采用Navicat工具的导入功能,下面记录一下处理的过程,以备查看。

    第一步、 数据库滤重

    在用户表中,有部分人存在两条记录,最新的一条是有效数据,因此需要对人员表进行滤重操作。将滤重的结果存放到单独的一张表中,SQL语法:create table T1 as T2

    // create table T1 AS T2 将T2的结果复制到新创建的T1表 CREATE table AA AS ( select t.a1,t.a2 from (select a1 row_number() over (partition by a2 order by a1 desc) as rn from user ) t where rn='1' group by t.a1)

    第二步、 Navicat工具导入

    运用Navicat打开数据库,在需要导入的表AB右键,选择–导入向导。 选择导入文件的格式,这里用的是excel格式的,选择xls格式,并点击下一步,选择需要导入的文件。 选择文件 选择数据库中需要导入的表,sheet签,点击选择下一步。 根据实际的需要,对应excel中列与数据库表的列,注意一定要对应准确,点击下一步。 设置好对应关系,一直下一步,点击开始,即利用Navicat工具开始了数据的入库。

    第三步、数据处理

    在数据导入的表AB中,发现有个身份证号SFZH字段的数据,有空格,需要进行去除空格。主要有两种方法:trim 和 replace。另 trim 函数 去掉两边的空格,ltrim 函数 去除左边的空格,rtrim 函数 去掉右边的空格。

    // 第一种方法是trim函数 update user set sfzh =trim(sfzh); //第二种方法是replace函数 替换 update user set sfzh =replace(sfzh, ' ', '');

    想要对比两个表中的字段,SQL语法:select A.id,B.id from A,B

    // 查看比较的语句 SELECT AB.ID,AB.SFZH,AA.ID,AA.SFZH FROM AA,AB WHERE AA.SFZH = AB.AA0177

    第三步、数据处理

    新导入表中有个字段,数据旧不准确,需要根据用户表AA来同步更新。oracle数据库的两个表更新字段语法:merge into

    // ORACLE数据库更新的语句 merge into merge into AB using AA on(AB.SFZH=AA.SFZH) when matched then update set AB.id = AA.id //如果不存在的话 可以执行插入的操作 when not matched then insert (id,name) values(a1,a2);

    注 : 从using 查询出来的结果逐条与on条件匹配,然后决定是update还是Insert。 当USING后面的sql没有查询到数据的时候,Merge Into语句是不会执行update和Insert操作的。

    博客参考: 【1】https://blog.csdn.net/qq_43037983/article/details/81979120

    最新回复(0)