zoukankan      html  css  js  c++  java
  • SQLSERVER如何导入数据保持ID不变(ID为自增主键)

    使用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企业管理器连接目标数据库(直接在本地数据库右键导出数据,再去连目标数据库也行),

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

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

    如果不是第一次,表中有数据,就同时勾选删除现有表中的行和标识插入,或者把三个勾都勾上,这里值得一提的按我们人的正常理解可以勾选“删除并重新创建目标表启用标识插入”就行了啊,表都删除重建了肯定旧数据不在了噻,但是TM不行,这样导入后之前的数据居然还存在,你说脑残不脑残,所以这里要么勾最后两个,要么三个全勾上。

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

  • 相关阅读:
    Java中的访问修饰符详细解析
    Java继承 练习题
    (转)Java 内存整理——堆、栈、常量池
    关于Char思考题
    如何使用帮助文档
    工具类的来由与静态方法
    题解 【NOIP2011】计算系数
    题解 【Uva】硬币问题
    题解 【NOIP2006】作业调度方案
    题解 【NOIP2003】神经网络
  • 原文地址:https://www.cnblogs.com/hpnet/p/6322623.html
Copyright © 2011-2022 走看看