使用SQL SERVER最操蛋的就是导入数据,以前用企业管理器直接导数据,导一次骂N次娘,在骂了微软无数次娘之后总结了一个方法揍合着还算受用。

其核心要点就是要将数据结构导入到目标数据库服务器上,再来导数据,如果直接使用sql企业管理器向目标数据库导入数据,就会发生一系列操蛋的问题:

ID不能自增了、ID改变了、主键索引被删了。

其实直接导还是有办法保持id主键自增、id不变的,就是到了编辑映射这一步,要依次选中每个表编辑映射,编辑sql,在id列加上PRIMARY KEY IDENTITY(1,1),然后勾选标识插入,这样导过去的数据和本地数据就是一样的,但是表多的话,修改sql相当蛋疼。

所以不得不说一句真TMD的操蛋,微软更新无数次数据库版本了还是没好好解决一下这个问题,就不能来个一键导入数据吗。

而实际使用中,可能附加数据库还比较常用,但是微软TMD不停的更新版本,导致个人电脑和公司电脑和服务器电脑,另外还可能会更换服务器,这些电脑上的版本不一样,就无法附加数据库,一般的技术人员可能很少用,但作为站长兼程序员的人,应该深有体会。

下文要说的就是先导入结构,再导入数据!

首先在源数据库上右键-任务-生成脚本,下一步,下一步,到了保存sql文件这里点高级,接下来有两种情况:

1:导出数据结构和数据(适合少量数据,几千条以内,数据多了脚本文件太大在sql软件上无法执行,要用sqlcmd,但这个工具要看人品,人品不好遇到一大堆操蛋的问题,还有另一个方法是osql,直接用win32 cmd执行sql文件,但速度慢,我上次几万条数据执行了20多分钟)。

首先,在高级里面找到为服务器版本编写脚本这项,右边选择你的服务器数据库版本,其次,找到要编写脚本的数据的类型这项,右边选择架构和数据

然后点确定,继续下一步完成。

把生成的sql文件在你的服务器上的sql软件里面打开,根据需要可以修改一下脚本中的数据库地址,点击执行,就会自动创建数据库、表,然后导入数据(如果数据库存在,先删除)。

上面这种情况是你可以在服务器上删除、创建数据库,如果不能删除重新创建,那就要使用原先的数据库,所以在服务器上打开脚本找到alter database 把前面的代码全部删掉,接下来脚本中的数据库名称如果和服务器上的不一样就改一下,执行脚本。

注意一个问题:

如果数据库存在不能删除重建,那就删除数据库里面的表,删除代码中alter database前面的代码,修改脚本中的database名称,再执行。

2:仅导出结构。

导出结构后把代码考到服务器数据库上去执行,默认会创建数据库,所以如果数据库存在就先删除,不能删除的话,就删除里面的表,删除代码中alter database前面的代码,修改脚本中的database名称,再执行,这样就能在服务器上创建好数据库结构,接下来是导入数据。

如果是少量数据,可以到直接生成脚本,高级里面选择仅导出数据,然后在服务器上直接执行。

如果是大量数据,用sql企业管理器连接目标数据库(直接在本地数据库右键导出数据,再去连目标数据库也行),

右键导入数据,然后直到选择表源和源视图这里,勾选要导入的表和视图后,然后看看这些一一对应的表对应的行是不是选中状态(不是前面那个勾,是整行),点击下面的编辑映射:

如果是第一次导入数据,勾选启用标识插入,一直下一步就能导入成功。

如果不是第一次,表中有数据,就同时勾选删除现有表中的行和标识插入,或者把三个勾都勾上。

值得一提的是批量编辑映射这个功能好像只有sql2008及以上版本才有,之前使用sql2005还没有,只能一个表一个表的编辑映射,有几十个表的情况下你可以想象,基本上是修改一个表,骂一次娘。

SQLSERVER如何导入数据保持ID不变(ID为自增主键)的更多相关文章

  1. MySQL导入csv文件内容到Table及数据库的自增主键设置

    写在前面 目的是测试将csv文件内容导入到表中, 同时记录一下自增主键的设置. 测试采用MySQL8.0. 新建表customer_info如下, 未设置主键. 修改上表, 添加主键id, 并设置为自 ...

  2. mybatis框架(6)---mybatis插入数据后获取自增主键

    mybatis插入数据后获取自增主键 首先理解这就话的意思:就是在往数据库表中插入一条数据的同时,返回该条数据在数据库表中的自增主键值. 有什么用呢,举个例子: 你编辑一条新闻,同时需要给该新闻打上标 ...

  3. mybatis插入数据后返回自增主键ID详解

    1.场景介绍: ​ 开发过程中我们经常性的会用到许多的中间表,用于数据之间的对应和关联.这个时候我们关联最多的就是ID,我们在一张表中插入数据后级联增加到关联表中.我们熟知的mybatis在插入数据后 ...

  4. SQLServer 自增主键创建, 指定自增主键列值插入数据,插入主键

    http://blog.csdn.net/zh2qiang/article/details/5323981 SQLServer 中含自增主键的表,通常不能直接指定ID值插入,可以采用以下方法插入. 1 ...

  5. Mysql自增主键ID重新排序方法详解

    Mysql数据库表的自增主键ID号乱了,需要重新排列. 原理:删除原有的自增ID,重新建立新的自增ID. 1,删除原有主键: ALTER TABLE `table_name` DROP `id`; 2 ...

  6. Mysql对自增主键ID进行重新排序

    Mysql数据库表的自增主键ID号经过一段时间的添加与删除之后乱了,需要重新排列. 原理:删除原有的自增ID,重新建立新的自增ID. 1,删除原有主键: ALTER TABLE `table_name ...

  7. mybaits返回自增主键ID

    mybaits两种获取自增主键ID的方法:一种是使用useGeneratedKeys,第二种是selectKey方法获取. useGeneratedKeys <insert id="i ...

  8. Mybatis 中获取添加的自增主键ID(针对mysql)

    分享一篇博客,主要就是针对在我们使用SSM的时候,在.xml中获取<insert></insert> 时的自增主键Id,由于好久没有,这个时候使用,有点生疏,就在这里写个笔记, ...

  9. Java中实现MongoDB自增主键ID

    1.了解MongoDB的ObjectId        MongoDB的文档固定是使用“_id”作为主键的,它可以是任何类型的,默认是个ObjectId对象(在Java中则表现为字符串),那么为什么M ...

  10. Mysql数据库表的自增主键ID号乱了,需要重新排列。

    Mysql数据库表的自增主键ID号乱了,需要重新排列. 原理:删除原有的自增ID,重新建立新的自增ID. 1,删除原有主键:ALTER TABLE `table_name` DROP `id`; 2, ...

随机推荐

  1. 在Ubuntu 14.04 64bit上安装StarUML 2.5版本

    1,在“http://staruml.io/”下载: 2,sudo dpkg -i StarUML-v2.5.0-64-bit.deb安装. 3,注册 .在help中输入.name:maxiongyi ...

  2. jquery全选框的实现

    函数实现的话: head里加入函数实现 <script language="javascript" type="text/javascript"> ...

  3. 全球主流8位MCU芯片详细解剖No.2:英飞凌 XC866 - 全文

    [导读] XC866是新型8位微控制器系列(XC800)的第一代系列产品,集成高性能8051核.片内FLASH及功能强大的外设集.此外,XC800系列产品内部集成的片 内振荡器和支持3.3V或5.0V ...

  4. 关于NOMINMAX这个预处理宏

    标准库在<algorithm>头中定义了两个模板函数std::min() 和 std::max().通常用它可以计算某个值对的最小值和最大值.可惜在 Visual C++ 无法使用它们,因 ...

  5. ShaderLab 之 UNITY_INITIALIZE_OUTPUT

    在 HLSLSupport.cginc 文件中定义了此宏: #if defined(UNITY_COMPILER_HLSL) #define UNITY_INITIALIZE_OUTPUT(type, ...

  6. ARM-LINUX学习笔记-(虚拟机linux串口终端以及USB程序下载,基于TQ2440)

    昨天安装了ssh服务之后今天在windows上用xshell登陆发现登录不上,原因是使用了virtualbox的NAT模式,在NAT模式下,客户机可以很方便地上网,但是想要链接宿主机就需要打开网络地址 ...

  7. 【POJ2104】【HDU2665】K-th Number 主席树

    [POJ2104][HDU2665]K-th Number Description You are working for Macrohard company in data structures d ...

  8. Extjs的架构设计思考,单页面应用 or 多页面?

    写在前面:不要认为 EXTJS 高版本就是一个界面改良,在项目中,仍然用 N 张页面,在 N 张页面部署 EXTJS .这种方式不用多讲,效率问题大家都看得出来, EXTJS 是一个集成开发工具,注定 ...

  9. javascript(3)

    使用javascript改进链接 摘自<javascript基础教程> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Trans ...

  10. Jquery插件之ajaxForm ajaxSubmit的理解用法

      如今ajax满天飞,作为重点的form自然也受到照顾. 其实,我们在平常使用Jquery异步提交表单,一般是在submit()中,使用$.ajax进行.比如:   $(function(){ $( ...