iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >如何利用SQL脚本导入数据到不同数据库避免重复
  • 679
分享到

如何利用SQL脚本导入数据到不同数据库避免重复

2024-04-02 19:04:59 679人浏览 安东尼
摘要

这篇文章给大家分享的是有关如何利用sql脚本导入数据到不同数据库避免重复的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。前言相信大家都有所体会,无论何种语言,一旦看见代码中有重复性

这篇文章给大家分享的是有关如何利用sql脚本导入数据到不同数据库避免重复的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

前言

相信大家都有所体会,无论何种语言,一旦看见代码中有重复性的代码则想到封装来复用,在SQL同样如此,若我们没有界面来维护而且需要经常进行的操作,我们会写脚本避免下次又得重新写一遍,但是这其中就涉及到一个问题,这个问题我开始也没太在意,直到某时某刻,老大看到我写的脚本后笑着问了一句,你的脚本可否重复执行,我懵逼了,很显然不能,如果不能避免这种情况发生,比如进行插入操作,当下次其他同事来执行其脚本时可能会插入重复数据,如果是在线上那就傻逼了,所以老大又给我上了一课,从此之后每次写脚本都加逻辑判断,是的,也就是可重复执行。

接下来讲讲最近项目中遇到的场景。

话题引入

在国民成年人体质测试中需要计算成年年纪且体侧年龄为20-59岁,若当前日期未超过成年人出生日期则岁数减一,否则不减,例如一个成年人出生日期为1991-11-01,此时该成年人的体侧年龄为25岁,若为1991-10-01则体侧年龄为26岁,此为第一步。第二步则是分组,每个年龄阶段的人测试的项目不一样,即需要根据年龄进行分组,在体侧文档中分为3组,一组为男性20-39岁,一组为女性20-39,最后一组不分男女为40-59。最后我们需要做的是根据不同的年龄阶段和性别进行分组。

我们建立如下表。

如何利用SQL脚本导入数据到不同数据库避免重复

如何利用SQL脚本导入数据到不同数据库避免重复

由上我们可以看出有20-39岁的男性,也有20-39岁的女性。也有40-59岁的男性等,关键在于我们怎么利用SQL根据国民成年人体质测试文档计算出上述成年人的实际年龄呢。

SELECT Id ,
  DATEDIFF(YEAR, Birthday, GETDATE()) AS age ,
  Name
FROM dbo.t1

如何利用SQL脚本导入数据到不同数据库避免重复

看到上述查询明显不正确,未到出生日期的人年龄并未减掉1,此时我们可以利用DATEPART函数,第一个参数指定为dayofyear,此参数表明指定日期到在这一年的天数,例如我们想要获取当前已经过了多少天。

SELECT DATEPART(dayofyear, GETDATE())

如何利用SQL脚本导入数据到不同数据库避免重复

SELECT DATEPART(dayofyear, '2017-12-31')

如何利用SQL脚本导入数据到不同数据库避免重复

我们通过出生日期的天数和当前日期的天数,若大于当前日期天数则说明生日还未到,否则减掉1。

SELECT Id ,
  DATEDIFF(YEAR, Birthday, GETDATE())
  - CASE WHEN DATEPART(DAYOFYEAR, Birthday) > DATEPART(DAYOFYEAR,
                GETDATE()) THEN 1
    ELSE 0
   END Age ,
  Name
FROM dbo.t1

如何利用SQL脚本导入数据到不同数据库避免重复

此时我们完成了年龄阶段的区分,下面我们再插入到另外一个数据库它test2中。 这里我能想到的是两种种方式,若还有其他欢迎补充。

LEFT JOIN ....IS NULL

我们利用左连接来进行插入,同时若重复的话则另外需要插入的表主键必定不为NULL,所以我们外加NULL判断则可以去除重复插入问题。

INSERT INTO test2.dbo.t2
  ( UserId ,
   Birthday ,
   Gender ,
   Name
  )
  SELECT t1.Id ,
    t1.Birthday ,
    t1.Gender ,
    t1.Name
  FROM dbo.t1 AS t1
    LEFT JOIN test2.dbo.t2 AS t2 ON t1.Id = t2.UserId
  WHERE t2.Id IS NULL

如何利用SQL脚本导入数据到不同数据库避免重复

当再次执行时则返回受影响行数为0

如何利用SQL脚本导入数据到不同数据库避免重复

NOT EXISTS/NOT IN

INSERT INTO test2.dbo.t2
  ( UserId ,
   Birthday ,
   Gender ,
   Name
  )
  SELECT t1.Id ,
    t1.Birthday ,
    t1.Gender ,
    t1.Name
  FROM dbo.t1 AS t1 
  WHERE NOT EXISTS(SELECT t2.UserId
     FROM test2.dbo.t2 t2
     WHERE t2.UserId = t1.Id)

感谢各位的阅读!关于“如何利用SQL脚本导入数据到不同数据库避免重复”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

您可能感兴趣的文档:

--结束END--

本文标题: 如何利用SQL脚本导入数据到不同数据库避免重复

本文链接: https://www.lsjlt.com/news/57171.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何利用SQL脚本导入数据到不同数据库避免重复
    这篇文章给大家分享的是有关如何利用SQL脚本导入数据到不同数据库避免重复的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。前言相信大家都有所体会,无论何种语言,一旦看见代码中有重复性...
    99+
    2024-04-02
  • MySQL数据库中怎么避免写入重复数据
    MySQL数据库中怎么避免写入重复数据,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。我们在 MySQL数据库进行表设...
    99+
    2024-04-02
  • sql数据库如何导入数据
    要导入数据到SQL数据库中,可以通过以下几种方法: 使用SQL INSERT语句:直接在SQL数据库中使用INSERT语句来插入...
    99+
    2024-05-10
    sql
  • 如何避免数据库被sql注入攻击
    避免数据库被sql注入攻击的方法:采用PreparedStatement预编译语句集,它内置了处理sql注入的能力,使用它的setXXX方法传值即可。使用正则表达式过滤传入的参数,例如:要引入的包:import java.util.rege...
    99+
    2024-04-02
  • 数据库脚本如何导出
    数据库脚本可以通过以下几种方法导出:1. 使用数据库管理工具导出:大多数数据库管理工具(如MySQL Workbench、Navic...
    99+
    2023-08-29
    数据库
  • 利用PL/SQL从Oracle数据库导出和导入数据
    本文实例为大家分享了使用PL/SQL从Oracle数据库导出和导入数据的方法,供大家参考,具体内容如下 1.导出数据: 方式一:工具—>导出用户对象—>导出.sql文件 注:这种方式导出的是...
    99+
    2024-04-02
  • 如何实现oracle数据库导入.dmp脚本的sql语句
    小编给大家分享一下如何实现oracle数据库导入.dmp脚本的sql语句,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、更改数...
    99+
    2024-04-02
  • php如何实现sql server数据导入到mysql数据库
    这篇文章主要介绍了php如何实现sql server数据导入到mysql数据库的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php如何实现sql server数据导入到mysql数据库文章都会有所收获,下面我们...
    99+
    2023-07-05
  • 如何避免Oracle数据库中的重复索引
    标题:如何避免Oracle数据库中的重复索引,需要具体代码示例 在数据库中,索引是一种非常重要的数据结构,用来加快数据库的查询速度。然而,有时候在设计数据库时会出现重复创建索引的情况,...
    99+
    2024-03-07
    重复索引识别 删除重复索引 优化索引配置 sql语句
  • 【MySQL】如何导入SQL数据库
    目录 如何导入SQL数据库【例子1-以Terminal终端命令行导入】【例子2-以SQLyog图形化软件导入】 如何导入SQL数据库 如何将现成的数据库导入到MySQL中?有两...
    99+
    2023-10-04
    数据库 mysql sql
  • 如何导入和导出数据到SQLite数据库
    要导入数据到SQLite数据库,可以使用SQLite的命令行工具或者SQLite的API。以下是两种方法: 使用SQLite的命令...
    99+
    2024-03-14
    SQLite
  • 如何将 .sql 文件导入到 MySQL 数据库?
    导入 SQL 文件到 MySQL 数据库是一个常见的任务,本文将介绍如何执行该操作。我们将逐步讲解具体的步骤,帮助您完成这个过程。 步骤 1: 打开命令提示符或终端 首先,在您的计算机上打开命令提示符或终端窗口。这将是执行导入操作的地方。 ...
    99+
    2023-09-18
    数据库 mysql sql
  • java批量导入避免重复数据的方法是什么
    在Java中批量导入数据时避免重复数据的方法可以有以下几种:1. 使用数据库的唯一约束:在批量导入数据之前,先查询数据库中已存在的数...
    99+
    2023-08-19
    java
  • php如何导入大量数据到数据库
    要导入大量数据到数据库,可以使用PHP中的数据库扩展(如MySQLi或PDO)来执行批量插入操作。以下是一个示例代码来导入大量数据到...
    99+
    2024-04-02
  • sql如何导入数据库文件
    SQL可以通过以下几种方式导入数据库文件:1. 使用命令行工具导入:可以使用命令行工具如MySQL命令行、PostgreSQL命令行...
    99+
    2023-09-29
    sql 数据库
  • sql文件如何导入数据库
    sql文件如何导入数据库?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!sql文件导入数据库的方法有两种,一种是用cmd的调...
    99+
    2024-04-02
  • 如何把ACCESS导入SQL数据库
    小编给大家分享一下如何把ACCESS导入SQL数据库,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一,首先,我说的是在ACCES...
    99+
    2024-04-02
  • oracle数据库如何执行sql脚本
    在 oracle 数据库中,可以使用 sqlplus、oracle enterprise manager 或 pl/sql developer 来执行 sql 脚本。方法如下:1. 使用...
    99+
    2024-05-13
    oracle 数据丢失
  • sqlserver如何导入本地数据库
    要导入本地数据库到SQL Server中,可以使用SQL Server Management Studio(SSMS)或者使用SQL...
    99+
    2024-04-19
    sqlserver 数据库
  • oracle数据库如何导入sql文件
    在Oracle数据库中导入SQL文件可以通过SQL*Plus工具或者Oracle SQL Developer工具来实现。以下是两种方...
    99+
    2024-04-22
    oracle
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作