none
请问怎么将数据库的数据转移到另外一个数据库 RRS feed

  • 问题

  • 不知道什么原因导致现有数据库部分表的主键消失。

    我想重新建立一个正确的空的数据库,需要将原数据库的数据全部转移到新的数据库中。

    出现错误的数据库的数据是正确的,所有表名,字段也都是一样的,只需要将数据全部导入就可以了。

    错误数据库虽然主键消失了,但是在写入数据的时候程序是判断主键之后写入的,数据没问题。

    不想使用DTS,因为一共有980多张表,很多表有timestamp,其他都有自增ID,用DTS的话每张表都要选择一下。而且出现的主键丢失的问题很大可能和DTS有关

    请问怎样可以转移数据?

    丢失我大致知道是怎么产生的了,因为以前没有出现过这种情况,只有这一次其它同事新建一个测试数据库时出现了这个问题。而且这种操作很少会有,所以我觉得不是很重要。

    只有这一个客户那边需要将测试数据导入到正式数据库中。

    所以我想知道怎么将所有数据导入。

    谢谢大家教我怎么查记录,新技能get!


    2015年8月27日 6:42

答案

全部回复

  • sql server 自带的数据导入/导出向导做这种事是很方便的啊,表名/字段都一样,根本就不需要会额针对每个表做什么额外设置(默认是不删除目标表重建的,所以表结构不会动你的)

    关于主键丢失的问题,如果是2005及之后的版本,你可以创建 DDL 触发器,把结构变更的操作都记录下来,看看是什么东东导致的就好了

    2015年8月27日 9:55
  • --方法1:

    在导出数据库生成数据库架构脚本,如果版本不同时注意选择目标数据库的版本

    在目标数据库执行,生成对应的对象,再用导入导出功能把数据导入

    --方法2:

    偶尔处理一下,直接备份还原不是省事

    --如果这项工作重复做时,最好采用同步复制方式同步数据

    丢失主健,在导入时没有对象时会丢失,只会创建表对象


    Roy Wu(吳熹Blog)(微博)

    2015年8月27日 10:16
    版主
  • 微软提供了一个免费的工具叫:performance dashboard 

    里面有一个报表叫架构更改历史

    楼主可以下载下来跟踪一下


    Love SQL

    2015年8月28日 3:59
  • 涨知识了,谢谢

    不过我想知道怎么导入数据来着。

    2015年8月28日 5:35
  • DTS does it for you.
    2015年8月28日 23:48
  • DTS does it for you.

     第一次用这个,自增列我知道怎么弄了,请问timestamp列怎么处理呢?

    用的是native client 导入到native client

    2015年8月31日 7:48
  • What's data type of the column? Sql will assign value for timestamp type column.
    2015年8月31日 14:19
  • What's data type of the column? Sql will assign value for timestamp type column.
     类型就是 timestamp,导入导出的时候 timestamp类型的列报错。
    2015年9月1日 1:05
  • timestamp 只能跳过的,这个没办法 copy 过去
    2015年9月1日 2:04
  • Because sql will assign value for timestamp type column as I said.
    2015年9月1日 2:05
  • timestamp 只能跳过的,这个没办法 copy 过去

      所以我现在卡在导入数据这个地方了,nativeclient 导入nativeclient的时候还不能选择列,就算900多张我点都没法点了。

    有其他的什么方式吗?

    2015年9月1日 2:39
  • Because sql will assign value for timestamp type column as I said.
      是自动赋值的没错,所以我导入数据的时候应该怎么处理呢?
    2015年9月1日 2:40
  • 已解决!

    使用了最原始的写程序跑循环加载列名 insert into select

    谢楼上各位!


    2015年9月1日 8:13