使用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. JAVA基础---面向对象

    方法的重载Overload: 一个类中可以定义有相同的名字, 参数不同的多个方法. 调用时, 会根据不同的参数选择对应的方法. static: 在数据区, 可以计数,属于类,不属于对象: public ...

  2. web beacon

    网络臭虫又叫 网络信标(Web beacon), 是可以暗藏在任何网页元素或邮件内的1像素大小的透明GIF或PNG图片 可以理解为<img src="http://www.webbea ...

  3. Apriori算法第二篇----详细分析和代码实现

    1 Apriori介绍 Apriori算法使用频繁项集的先验知识,使用一种称作逐层搜索的迭代方法,k项集用于探索(k+1)项集.首先,通过扫描事务(交易)记录,找出所有的频繁1项集,该集合记做L1,然 ...

  4. jquery.proxy的四种使用场景及疑问

    作者:zccst 其实只有两种使用方式,只不过每一种又细分是否传参. 先给一段HTML,后面会用来测试: <p><button id="test">Test ...

  5. [转]hibernate三种状态详解

    本文来自 http://blog.sina.com.cn/u/2924525911 hibernate 三种状态详解 (2013-04-15 21:24:23) 转载▼   分类: hibernate ...

  6. 编译安装CoreSeek-4.1

    编译安装CoreSeek-4.1 yum -y install expat-devel* wget  http://www.coreseek.cn/uploads/csft/4.0/coreseek- ...

  7. linux shell命令之 xargs

    1  简介 xargs是一条Unix和类Unix操作系统的常用命令.它的作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题. 2 特点 (1) 处理文件/目录名中的空格 find ...

  8. ARM-LINUX学习笔记-1

    安装完linux之后记得系统更新,更新使用apt命令,如下(记得使用之前使用sudo -i 指令切换到root用户模式) apt-get update  更新系统软件源,相当于查找更新 apt-get ...

  9. LWIP_STM32_ENC28J60_NETCONN_TCP_SERVICER(5)

    前面说了TCP客户端通讯,这一篇来说说单片机作为服务器的通讯方法 tcp客户端和服务器的链接做大的不同在于服务器是不需要主动链接谁的,他只需要绑定在自己得一个特定的端口之上,等别人来连接就好了,先创建 ...

  10. Android Material各种颜色设置

    Blogpost about support appcompat v21 from Chris Banes