Foxtable(狐表)用户栏目专家坐堂 → 关于_Identify数据迁移问题


  共有2171人关注过本帖树形打印复制链接

主题:关于_Identify数据迁移问题

帅哥哟,离线,有人找我吗?
luodang2050
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:585 积分:5674 威望:0 精华:0 注册:2014/5/21 10:30:00
关于_Identify数据迁移问题  发帖心情 Post By:2017/8/9 22:07:00 [只看该作者]

表A跟表B结构完全一致,怎么将表A的数据完全迁移到表B,关键是"_Identify"不能改变,因其做了关联。

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/9 22:44:00 [只看该作者]

那只能写代码插入了。试试

 

DataTables("表b").datarows.Clear
For Each dr As DataRow In DataTables("表A").datarows
    Dim sql As String = "insert into {表B} ([_Identify], 第一列,第二列) values('" &  dr("_Identify") & "','" & dr("第一列") & "','" & dr("第二列") & "')"
    Dim cmd As new SQLCommand
    cmd.CommandText = sql
    cmd.ExecuteNonQuery
Next
DataTables("表b").load


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/9 22:44:00 [只看该作者]

以后,尽量不要用_Identify列做关联了。

 回到顶部
帅哥哟,离线,有人找我吗?
luodang2050
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:585 积分:5674 威望:0 精华:0 注册:2014/5/21 10:30:00
  发帖心情 Post By:2017/8/9 23:04:00 [只看该作者]

测试了下,提示如下
当 IDENTITY_INSERT 设置为 OFF 时,不能为表 'test2' 中的标识列插入显式值。

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/9 23:11:00 [只看该作者]

试试

 


DataTables("表b").datarows.Clear
For Each dr As DataRow In DataTables("表A").datarows
    Dim sql As String = "SET IDENTITY_INSERT 表B ON;insert into {表B} ([_Identify], 第一列,第二列) values('" &  dr("_Identify") & "','" & dr("第一列") & "','" & dr("第二列") & "')"
    Dim cmd As new SQLCommand
    cmd.CommandText = sql
    cmd.ExecuteNonQuery
Next
DataTables("表b").load


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/9 23:14:00 [只看该作者]

如果确实不行。

 

方法一:先把_Identify列改成不自动递增的列;

 

方法二:加一列编号列,把_Identify的值赋值过来,然后修改你的关联,改成用编号列关联。


 回到顶部
帅哥哟,离线,有人找我吗?
luodang2050
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:585 积分:5674 威望:0 精华:0 注册:2014/5/21 10:30:00
  发帖心情 Post By:2017/8/9 23:21:00 [只看该作者]

谢谢,测试通过,但是dr在数据处理上有点问题
1、时间:原(null)改(1900-01-01 00:00:00.000)
2、文本:原(null)改()
3、整数:原(null)改(0)
这个问题怎么解决?

 回到顶部
帅哥哟,离线,有人找我吗?
luodang2050
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:585 积分:5674 威望:0 精华:0 注册:2014/5/21 10:30:00
  发帖心情 Post By:2017/8/10 0:08:00 [只看该作者]

谢谢指导,再此基础上,已经进行了完善,直接sql数据库两表对烤,数据完美保真
            Dim 插入列 As String = ""
            'Dim 插入值 As String = ""
            For Each dc As System.Data.DataColumn In dtr.basetable.Columns
                Dim dcn As String = dc.ColumnName
                If dcn.StartsWith("System_")
                Else
                    插入列 = 插入列 & "," & "[" & dcn & "]"
                    '插入值 = 插入值 & "," & "'" & dr(dcn) & "'"
                End If
            Next
            插入列 = 插入列.TrimStart(",")
            '插入值 = 插入值.TrimStart(",")
            Dim 原实例名 As String = ""
            Select Case coon1
                Case "IBMDMAIN"
                    原实例名 = "IBMD"
                Case Else
                    原实例名 = coon1
            End Select 
            Dim sql1 As String = "SET IDENTITY_INSERT {" & tbn2 & "} ON"
            Dim sql2 As String = "insert into {" & tbn2 & "} (" & 插入列 & ") sel ect " & 插入列 & " fro m [" & 原实例名 & "].[dbo].{" & tbn1 & "}"
            Dim sql3 As String = "SET IDENTITY_INSERT {" & tbn2 & "} OFF"
            Dim cmd0 As new SQLCommand
            cmd0.ConnectionName = coon2
            cmd0.CommandText = sql1 & ";" & sql2 & ";" & sql3
            cmd0.ExecuteNonQuery    

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/10 9:44:00 [只看该作者]

你还可以用 select into 语句直接复制表的 http://www.w3school.com.cn/sql/sql_select_into.asp

 


 回到顶部
帅哥哟,离线,有人找我吗?
luodang2050
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:585 积分:5674 威望:0 精华:0 注册:2014/5/21 10:30:00
  发帖心情 Post By:2017/8/10 10:53:00 [只看该作者]

这个更加效率,非常感谢

 回到顶部