SQLServer导入数据如何保持ID不变(ID为自增主键)

问题:

使用SQLServer导入数据,如果直接使用sql企业管理器向目标数据库导入数据,就会发生一系列问题:ID不能自增了、ID改变了、主键索引被删了。

解决方法1:间接导入

先导出数据结构,然后将数据结构导入到目标数据库服务器上,再来导数据。

解决方法2:直接导入

在编辑映射这一步,要依次选中每个表编辑映射,编辑sql,

在id列加上PRIMARY KEY IDENTITY(1,1),然后勾选启用标识插入,这样导过去的数据和本地数据就是一样的。

参考https://www.cnblogs.com/hpnet/p/6322623.html

1. 更新呼叫中心数据 取呼叫中心系统数据 ip:192.168.3.1 端口:3306 id=lpsoft [email protected] database=OrderManage 表为 T_Customer 以T_Customer的phone字段为索引,匹配SAP数据,匹配的数据都是192.168.0.229这个ip的SINO_SAP这个库里的表 SQL账号:SAPReader 密码:Sino2025zyq 匹配SAP数据为: SELECT CAST(111100000048210 + ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS bigint) AS Id, CAST(LOWER(NEWID()) AS varchar(50)) AS GUID , CAST('ipcc.org' AS varchar(50)) AS Domain, CAST( CASE WHEN ZY_TB_CustomerProfile.[客户类型] = 'VIP' THEN '703192237850693' ELSE '703192237846597' END AS varchar(20)) AS CustomerTypeCode, CAST('' AS text) AS Remark, CAST(ZY_TB_CustomerPhone.CardCode AS varchar(50)) AS S6, CAST(ZY_TB_CustomerPhone.Cardname AS varchar(100)) AS CompanyName, CAST(ZY_TB_CustomerPhone.Name AS varchar(50)) AS Name, CAST(LEFT(ZY_TB_CustomerPhone.Telephone, 15) AS varchar(15)) AS Phone, CAST(FORMAT(ZY_TB_CustomerProfile.近一年总毛利, '0.00') AS varchar(50)) AS S4, CAST(FORMAT(ZY_TB_CustomerProfile.预收款金额, '0.00') AS varchar(50)) AS S2, CAST(FORMAT(ZY_TB_CustomerProfile.应收款, '0.00') AS varchar(50)) AS S1, CAST(FORMAT(ZY_TB_CustomerProfile.全部库存金额, '0.00') AS varchar(50)) AS S3, CAST(ZY_TB_CustomerProfile.等级名称 AS varchar(50)) AS S5 FROM ZY_TB_CustomerPhone LEFT JOIN ZY_TB_CustomerProfile ON ZY_TB_CustomerPhone.CardCode = ZY_TB_CustomerProfile.[客户编号] WHERE ZY_TB_CustomerPhone.CardCode IS NOT NULL AND ZY_TB_CustomerPhone.Cardname IS NOT NULL and ZY_TB_CustomerPhone.Telephone not like '8441%'; 对T_Customer的字段更新: CompanyName、S6、CustomerTypeCode、S5、S1、S2、S3、S4 把SAP最新数据写入呼叫中心 2. 追加呼叫中心数据 对比T_Customer的phone和 SAP数据的phone, 将SAP有,T_Custome没有的数据整理出来,新到T_Custome中,需要新的字段就是: SELECT CAST(111100000048210 + ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS bigint) AS Id, CAST(LOWER(NEWID()) AS varchar(50)) AS GUID , CAST('ipcc.org' AS varchar(50)) AS Domain, CAST( CASE WHEN ZY_TB_CustomerProfile.[客户类型] = 'VIP' THEN '703192237850693' ELSE '703192237846597' END AS varchar(20)) AS CustomerTypeCode, CAST('' AS text) AS Remark, CAST(ZY_TB_CustomerPhone.CardCode AS varchar(50)) AS S6, CAST(ZY_TB_CustomerPhone.Cardname AS varchar(100)) AS CompanyName, CAST(ZY_TB_CustomerPhone.Name AS varchar(50)) AS Name, CAST(LEFT(ZY_TB_CustomerPhone.Telephone, 15) AS varchar(15)) AS Phone, CAST(FORMAT(ZY_TB_CustomerProfile.近一年总毛利, '0.00') AS varchar(50)) AS S4, CAST(FORMAT(ZY_TB_CustomerProfile.预收款金额, '0.00') AS varchar(50)) AS S2, CAST(FORMAT(ZY_TB_CustomerProfile.应收款, '0.00') AS varchar(50)) AS S1, CAST(FORMAT(ZY_TB_CustomerProfile.全部库存金额, '0.00') AS varchar(50)) AS S3, CAST(ZY_TB_CustomerProfile.等级名称 AS varchar(50)) AS S5 FROM ZY_TB_CustomerPhone LEFT JOIN ZY_TB_CustomerProfile ON ZY_TB_CustomerPhone.CardCode = ZY_TB_CustomerProfile.[客户编号] WHERE ZY_TB_CustomerPhone.CardCode IS NOT NULL AND ZY_TB_CustomerPhone.Cardname IS NOT NULL and ZY_TB_CustomerPhone.Telephone not like '8441%'; 这个的全部字段 但是要注意新id和GUID不能和T_Custome原先有的重复,如果重复了就换一个 可以用sqlserver代码实现么 要注意sap是sqlserver 呼叫中心的数据是mysql
最新发布
08-12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值