以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 关于_Identify数据迁移问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=104999) |
-- 作者:luodang2050 -- 发布时间:2017/8/9 22:07:00 -- 关于_Identify数据迁移问题 表A跟表B结构完全一致,怎么将表A的数据完全迁移到表B,关键是"_Identify"不能改变,因其做了关联。 |
-- 作者:有点甜 -- 发布时间:2017/8/9 22:44:00 -- 那只能写代码插入了。试试
DataTables("表b").datarows.Clear |
-- 作者:有点甜 -- 发布时间:2017/8/9 22:44:00 -- 以后,尽量不要用_Identify列做关联了。 |
-- 作者:luodang2050 -- 发布时间:2017/8/9 23:04:00 -- 测试了下,提示如下 当 IDENTITY_INSERT 设置为 OFF 时,不能为表 \'test2\' 中的标识列插入显式值。
|
-- 作者:有点甜 -- 发布时间:2017/8/9 23:11:00 -- 试试
|
-- 作者:有点甜 -- 发布时间:2017/8/9 23:14:00 -- 如果确实不行。
方法一:先把_Identify列改成不自动递增的列;
方法二:加一列编号列,把_Identify的值赋值过来,然后修改你的关联,改成用编号列关联。 |
-- 作者:luodang2050 -- 发布时间:2017/8/9 23:21:00 -- 谢谢,测试通过,但是dr在数据处理上有点问题 1、时间:原(null)改(1900-01-01 00:00:00.000) 2、文本:原(null)改() 3、整数:原(null)改(0) 这个问题怎么解决?
|
-- 作者:luodang2050 -- 发布时间: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
|
-- 作者:有点甜 -- 发布时间:2017/8/10 9:44:00 -- 你还可以用 select into 语句直接复制表的 http://www.w3school.com.cn/sql/sql_select_into.asp
|
-- 作者:luodang2050 -- 发布时间:2017/8/10 10:53:00 -- 这个更加效率,非常感谢 |