数据迁移常用方法

article/2025/10/24 6:45:08

SQL SERVER几种数据迁移/导出导入的实践

SQLServer提供了多种数据导出导入的工具和方法,在此,分享我实践的经验(只涉及数据库与Excel、数据库与文本文件、数据库与数据库之间的导出导入)。

(一)数据库与Excel

方法1:

使用数据库客户端(SSMS)的界面工具。右键选择要导出数据的数据库,选择“任务”——“导出数据”,下图1,按照向导一步一步操作即可。而导入则相反,导入时,SQLServer会默认创建一张新表,字段名也默认跟导入的Excel标题一样,并且会默认字段数据类型等。当然在可以在向导进行修改。需要注意的是如果标题不是英文而是中文,默认创建字段名也是中文,这将给后面数据更新操作带来麻烦,所以最好还是以有意义的英文字段名。把数据导入后,再通过执行语句,把数据插入/更新到业务表。

 figure-1:任务——导出数据

 

方法2:

从SQLServer2005开始,可以直接在SSMS上查询出来的结果复制,然后粘贴到Excel上,对于少量数据来说,是非常快速方便的,需要注意的是长数字可能会变成科学记数法的形式,提前在Excel上指定列的格式为文本即可。

导入的话,ctrl + c 复制Excel上的数据,然后在选择相关表,编辑数据,把数据直接粘贴上去即可。但是不建议直接粘贴到业务表(如果表是空白没有数据,并且字段顺序对应,可以这样操作),而是建议先粘贴到一个新建的中间表中,然后再通过语句,把数据插入/更新到业务表。

这种方法的导出导入,适合于少量的数据,如5000行以内的记录,大于5000行以上就不建议了,速度较慢,如果数据过大,还一定成功。

 

 

(二)数据库与文本文件、数据库与数据库

数据库之间的数据迁移或导出导入其实是比较方便的,比如备份数据库后,在新的机器上做恢复。但是需要注意的是SQL2008之前的版本的备份无法在SQL2012或以上版本上直接恢复的,而是通过中间的SQL2008做一个过渡,把旧版本的数据库恢复到SQL2008,然后做备份,最后在SQL2012上恢复。

如果是新版本(下面以SQL2012为例)的备份文件恢复到旧版本(以SQL2008为例)上就比较麻烦了,一般是不支持新版本备份文件在旧版本中恢复的。只能通过编写脚本,把新版本的数据导入到旧版本中。

 

方法1:

首先推荐使用的是数据不落地的“链接服务器”。使用SQL2012的SSMS,同时连接到SQL2012和SQL2008的实例,通过编写脚本把SQL2012的数据导入到SQL2008中。两个实例的可以通过链接服务器来连接。以下是设置步骤。

figure-2:新建链接服务器

 

figure-3:链接服务器和数据源

 

figure-4:认证

 

figure-5:创建成功后,可以直接浏览链接服务器的目录,也可以使用语句查询了。

 

也可以使用脚本来创建链接服务器。

复制代码

--创建链接服务器
EXEC sp_addlinkedserver 
@server='LINKED_SERVER_TEST2',--被访问的服务器别名
@srvproduct='',
@provider='SQLOLEDB',
@datasrc='192.168.88.6,11433'--数据源
GO--创建登录名和密码
EXEC sys.sp_addlinkedsrvlogin
@rmtsrvname = 'LINKED_SERVER_TEST2', -- 被访问的服务器别名
@useself = 'false',
@locallogin = NULL,
@rmtuser = 'sa', -- 数据源登录名
@rmtpassword = 'psd123456' -- 数据源登录密码
GO--设置数据可以访问
EXEC sys.sp_serveroption
@server = 'LINKED_SERVER_TEST2', 
@optname = 'data access',
@optvalue = N'true'
GO

复制代码

code-1:创建链接服务器的脚本

 

创建成功后,可以直接查询数据。

figure-6:查询链接服务器的数据

 

通过视图sys.servers可以查询所有服务器及相关的属性。

figure-7:查询所有链接服务器

 

在SSMS上或运行以下脚本可以删除指定的链接服务器。

--删除链接服务器及所有登录
EXEC sys.sp_dropserver@server = 'LINKED_SERVER_TEST2',@droplogins = 'droplogins'GO

 code-2:删除链接服务器及所有登录

 

详细请参考:https://technet.microsoft.com/zh-cn/library/ff772782%28v=sql.105%29.aspx

 

 

方法2:

如果两个实例不能连接,只能在SQL2012上导出数据,再到SQL2008上导入。SQLServer提供生成包含数据的脚本工具,下图2。在第三步的“高级”选项里有一项“Types of data to scripts”有三个选择:Data only,Schema and data,Schema only,分别是只生成数据、生成表(对象)和数据,表(对象)。还有生成脚本的版本“Script for Server Version”,下图3。其他选项,按实际需要选择。

 

 figure-8:任务——生成脚本

 

figure-9:生成脚本的高级选项

 

也可以使用存储过程生成包含数据的脚本。这里介绍一个别人已经做写好存储过程:sp_generate_inserts。运行之后,会按表每条记录生成一条insert的语句

 View Code

code-3:sp_generate_inserts脚本源代码

 

在我的实际使用中,只有两三个参数比较常用,分别是@table_name、@from和@owner,如果表的架构使用默认的dbo,则可以省略。以下是一个使用的例子:

figure-10:使用sp_generate_inserts的一个例子

 

其他参数的用法,这里就不一一解释了。我经常使用这个存储过程做一些简单而少量(如数万行记录以内)的数据导出导入,比前面介绍的方法方便快捷许多。但这个存储过程支持处理一般常用的数据类型,像XML这种类型则不支持。还有,如果生成的数据太多太大,SSMS返回数据会很慢,甚至SSMS会挂了,这时还是使用SSMS自带的导出脚本到文件稳妥些。如果使用生成的数据脚本文件很大,几百MB甚至上GB,在导入时,就不能直接使用SSMS直接打开来执行了。可以使用SQLCMD实用工具来在执行脚本。如下面的一个例子,在D盘下有一个脚本1.sql,内容为:

USE AdventureWorks2008R2
GO
SELECT * FROM Person.CountryRegion;
GO

code-4:SQLMCD的测试脚本

 

在运行下输入CMD,输入:

sqlcmd -S localhost -d AdventureWorks2008R2 -i D:\1.sql

code-5:SQLMCD的命令

 

回车执行后如下图,SQLCMD的详细用法,请参考:https://msdn.microsoft.com/zh-cn/library/ms180944.aspx

和 https://msdn.microsoft.com/zh-cn/library/ms162773%28v=sql.105%29.aspx

 

 figure-11:SQLCMD的测试例子

 

 

方法3:

使用BCP导出导入大容量数据

原文地址:https://www.cnblogs.com/fishparadise/p/4592789.html


http://chatgpt.dhexx.cn/article/WU2UZBv8.shtml

相关文章

电脑数据迁移高招,怎么把旧电脑的数据迁移到新电脑

小编的朋友买了台新的笔记本电脑,方便出差工作,需要将公司电脑上的资料也导一份到新电脑里,怎么把旧电脑的数据迁移到新电脑。朋友一点也不想花时间重新下载安装软件,尤其是那些工作需要的应用。下面是她的一些要求: …

数据迁移ETL工具分享

1.概述 ETL(是Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程),对于企业应用来说,我们经常会遇到各种数据的处理、转换、迁移的场景。 我汇总了一些目前市面上比较常用的ETL数据迁移工具,希望对你会有所帮助。 2. …

flyway(数据库迁移工具)

系列文章目录 主要是用来记录每次迭代的版本sql的表结构的变动.在部署某个版本时,能够快找到这个版本对应的sql,避免出现表结构的错误 Flyway是独立于数据库的应用、管理并跟踪数据库变更的数据库版本管理工具。用通俗的话讲,Flyway可以像Git管理不同人的代码那样…

在线数据迁移

在线数据迁移,是指将正在提供线上服务的数据,从一个地方迁移到另一个地方,整个迁移过程中要求不停机,服务不受影响。根据数据所处层次,可以分为 cache 迁移和存储迁移;根据数据迁移前后的变化,又…

数据迁移软件|如何将旧电脑的数据传输到新电脑?

小编最近换了台新电脑,需要将旧电脑的文件都转移过去,但是旧电脑上大文件不少,不管是上传到网盘再下载,还是通过QQ或微信在线传输,速度都很慢,且步骤太复杂。相信很多小伙伴也和小编一样遇到过这个问题&…

2023最值得推荐的电脑数据迁移方法,一键转移文件和程序

没有什么比拥有一台新电脑更令人兴奋的了。这意味着您可以使用大量新功能、更强大的功能、更好的显示器和更多存储空间。但是,如果您需要将文件、数据从旧计算机传输到新计算机,或者再新电脑上安装新的程序,那么这种兴奋可能会有所减弱。因为…

各种数据库之间数据迁移工具

前阶段需要把sqlserver上的数据迁移到mysql上,找到了非常好用的工具DB2DB。 下载地址:http://www.szmesoft.com/DB2DB DB2DB 是目前经过测试速度最快、最稳定实现多种数据库之间进行数据转换的工具。支持 SQL Server、MySQL、SQLite、Access 等多种数据…

可视化数据同步迁移工具 CloudCanal

CloudCanal 介绍 CloudCanal 是一款数据迁移同步工具,提供友好的可视化操作界面,支持多种数据源间的数据迁移、数据同步、结构迁移、数据校验。 CloudCanal 核心团队成员来自阿里巴巴中间件和数据库团队, 长期从事分布式数据库、数据库中间件、应用中间…

数据的迁移工具

数据的迁移工具 逻辑导出导入工具:exp ----逻辑导出工具 imp ----逻辑导入工具 数据导出模式: 全库导出 --full 先新建一个用来导出导入的目录 mkdir -p /home/oracle/backup/exp 进入该目录 cd /home/oracle/backup/exp 用语句导出 exp \ s…

电脑数据传输/数据迁移下载哪款软件好?

买了新电脑要重新安装应用程序?旧电脑的数据要迁移到新电脑?文件太多传输速度慢?就没有什么办法是可以一次性解决这些问题的吗?答案当然是有!我们可以借助专业的电脑数据传输/数据迁移软件来完成!那么究竟数…

数据迁移工具(数据库之间进行数据库迁移所使用的工具及迁移流程。)

总流程图: 以下为mysql,oracle,瀚高(highgo),金仓(kingbase),达梦(DM8)数据库之间进行数据库迁移所使用的工具及迁移流程。 1.KingBase Explore…

硬盘数据迁移软件哪款好用?强烈推荐它!

硬盘数据迁移软件哪款好用?现如今,将一块硬盘的数据完整迁移克隆到另一块硬盘已经不是什么技术难题,市面上形形色色的硬盘数据迁移软件也不少,但是到底哪款好用呢?小编在试过多款硬盘数据迁移软件之后,综合…

8款数据迁移工具选型,主流且实用

前言:ETL(是Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程),对于企业应用来说,我们经常会遇到各种数据的处理、转换、迁移的场景。今天特地给大家汇总了一些目前市面上比较常用的ETL数据迁移工具,希望对…

数据迁移方案

一、数据迁移背景 问题场景: 现在有一个未分库分表的系统,未来要分库分表,如何设计才可以让系统从未分库分表动态切换到分库分表上? 1.1 停机迁移方案 我先给你说一个最 low 的方案,就是很简单,大家伙儿凌晨…

数据迁移工具

1.Kettle Kettle是一款国外开源的ETL工具,纯Java编写,绿色无需安装,数据抽取高效稳定 (数据迁移工具)。 Kettle 中有两种脚本文件,transformation 和 job,transformation 完成针对数据的基础转换,job 则完成整个工作流的控制。 Kettle 中文名称叫水壶,该项目的主程序…

数据迁移工具,用这8种就够了!!!

前言 最近有些小伙伴问我,ETL数据迁移工具该用哪些。 ETL(是Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程),对于企业应用来说,我们经常会遇到各种数据的处理、转换、迁移的场景。 今天特地给大家汇总了一些目前…

数据迁移工具,用这8种就够了

前言 最近由于工作需要需要进行数据迁移,那么ETL数据迁移工具该用哪些呢? ETL(是Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程),对于企业应用来说,我们经常会遇到各种数据的处理、转换、迁移的场景。…

电脑文件软件搬家迁移十大工具

10 大适用于 Windows 的数据迁移软件。 数据迁移至关重要,几乎所有组织都依赖于此。如果您认为数据传输不是一件容易的事,那么数据迁移软件可以帮上忙。 1、奇客电脑迁移 将现有操作系统、软件、文件迁移到 新电脑的最佳方法之一是使用名为奇客电脑迁移…

如何将旧电脑数据迁移到新电脑?10 款数据迁移软件工具分享

最好的数据迁移软件可以自动完成将数据从一个系统传输到另一个系统的过程。人们使用数据迁移软件的最常见原因是当他们从一个应用程序切换到另一个应用程序时。 10 款数据迁移软件 公司或个人出于各种原因移动数据。也许他们已经向他们的技术堆栈添加了新的资产或应用程序&…

‘v-model‘ directives require the attribute value which is valid as LHS.

哈喽,大家好啊。最近写vue项目的时候遇到这样的问题 最后才知道:v-modle指令要求属性值必须与LHS一样有效 原因就是:v-model 将始终把Vue实例的data视为数据真实的来源。应该在组件的Js里面打data中声明初始值,不能要求v-model一次…