一张mssql表中,请问有那些方法?3张表的结构相同。
现在的问题:
1.用DTS的话,由于两张oracle数据有主键相同的情况,不能全部复制。
2.两张oracle数据全部都要,主键相同的时候,修改一下主键值(是复合主键),有现成的工具马?没有的话,自己写代码实现,用什么比较好?
6 个解决方案
#1
不知道你所说的“修改一下主键值”是要怎样修改???
如果必须手工修改,那列出主键有重复的一条一条改就是啦
如果要用命令一次过完成,那请说明修改的规则。
如果必须手工修改,那列出主键有重复的一条一条改就是啦
如果要用命令一次过完成,那请说明修改的规则。
#2
我这里曾经使用过的一个方法--把ORACLE作成链接服务器,然后定时从上面同步数据就OK ,方法如下
1. SQLSERVER服务器上面安装oracle客户端,配置服务命名(假设为 test)
2. 在SQLSERVER服务器上面建立链接服务器,脚本如下
3. 使用类似的语句将oracle的数据插入到sqlserver表中
4. 如果ORACLE数据是实时增加的,可以在SQLSERVER上面建立一个表记录上次插入的id,然后下次可以从上次的ID+1开始继续插入
1. SQLSERVER服务器上面安装oracle客户端,配置服务命名(假设为 test)
2. 在SQLSERVER服务器上面建立链接服务器,脚本如下
-- Adding linked server:
exec sp_addlinkedserver @server = 'test' ,
@srvproduct = 'ORACLE',
@provider = 'MSDAORA',
@datasrc = 'test'
-- Adding linked server login:
exec sp_addlinkedsrvlogin @useself='false ', @rmtsrvname = 'test',
@rmtuser = 'user', --数据库用户
@rmtpassword = 'password' --密码
3. 使用类似的语句将oracle的数据插入到sqlserver表中
insert into sqlserver表 select * from test..oracle表名
4. 如果ORACLE数据是实时增加的,可以在SQLSERVER上面建立一个表记录上次插入的id,然后下次可以从上次的ID+1开始继续插入
#3
2.两张oracle数据全部都要,主键相同的时候,修改一下主键值(是复合主键),有现成的工具马?没有的话,自己写代码实现,用什么比较好?
可以在SQLSERVER的表结构上面做文章
可以在SQLSERVER的表结构上面做文章
#4
数据比较多,想自动修改复合主键中的一个,使得不会主键重复。
修改规则,就是复合主键的一个加1,比如 两条相同主键的数据
01111,00000001,XXXXXX,XXXXXX,XXXXX
01111,00000001,SSSSSS,SSSSSS,SSSSS
第二条复合主键改成(01111,00000002)
#5
只是单纯的将两张oracle表的数据放在一张mssql表格中。
其实拷贝黏贴就可以的,但是由于有复合主键相同的数据。
所以,想写代码自动修改后插入mssql表格中。
#6
现在将mssql表格的复合主键去掉了。
然后通过dts将oracle的两张数据表格全部导出到mssql表格中,成功了。
然后将mssql中的数据导出为csv文件,再用java编写个程序,修改csv文件中主键值,然后再导入mssql不知道可行不?
有更好的方法吗?
然后通过dts将oracle的两张数据表格全部导出到mssql表格中,成功了。
然后将mssql中的数据导出为csv文件,再用java编写个程序,修改csv文件中主键值,然后再导入mssql不知道可行不?
有更好的方法吗?
#1
不知道你所说的“修改一下主键值”是要怎样修改???
如果必须手工修改,那列出主键有重复的一条一条改就是啦
如果要用命令一次过完成,那请说明修改的规则。
如果必须手工修改,那列出主键有重复的一条一条改就是啦
如果要用命令一次过完成,那请说明修改的规则。
#2
我这里曾经使用过的一个方法--把ORACLE作成链接服务器,然后定时从上面同步数据就OK ,方法如下
1. SQLSERVER服务器上面安装oracle客户端,配置服务命名(假设为 test)
2. 在SQLSERVER服务器上面建立链接服务器,脚本如下
3. 使用类似的语句将oracle的数据插入到sqlserver表中
4. 如果ORACLE数据是实时增加的,可以在SQLSERVER上面建立一个表记录上次插入的id,然后下次可以从上次的ID+1开始继续插入
1. SQLSERVER服务器上面安装oracle客户端,配置服务命名(假设为 test)
2. 在SQLSERVER服务器上面建立链接服务器,脚本如下
-- Adding linked server:
exec sp_addlinkedserver @server = 'test' ,
@srvproduct = 'ORACLE',
@provider = 'MSDAORA',
@datasrc = 'test'
-- Adding linked server login:
exec sp_addlinkedsrvlogin @useself='false ', @rmtsrvname = 'test',
@rmtuser = 'user', --数据库用户
@rmtpassword = 'password' --密码
3. 使用类似的语句将oracle的数据插入到sqlserver表中
insert into sqlserver表 select * from test..oracle表名
4. 如果ORACLE数据是实时增加的,可以在SQLSERVER上面建立一个表记录上次插入的id,然后下次可以从上次的ID+1开始继续插入
#3
2.两张oracle数据全部都要,主键相同的时候,修改一下主键值(是复合主键),有现成的工具马?没有的话,自己写代码实现,用什么比较好?
可以在SQLSERVER的表结构上面做文章
可以在SQLSERVER的表结构上面做文章
#4
数据比较多,想自动修改复合主键中的一个,使得不会主键重复。
修改规则,就是复合主键的一个加1,比如 两条相同主键的数据
01111,00000001,XXXXXX,XXXXXX,XXXXX
01111,00000001,SSSSSS,SSSSSS,SSSSS
第二条复合主键改成(01111,00000002)
#5
只是单纯的将两张oracle表的数据放在一张mssql表格中。
其实拷贝黏贴就可以的,但是由于有复合主键相同的数据。
所以,想写代码自动修改后插入mssql表格中。
#6
现在将mssql表格的复合主键去掉了。
然后通过dts将oracle的两张数据表格全部导出到mssql表格中,成功了。
然后将mssql中的数据导出为csv文件,再用java编写个程序,修改csv文件中主键值,然后再导入mssql不知道可行不?
有更好的方法吗?
然后通过dts将oracle的两张数据表格全部导出到mssql表格中,成功了。
然后将mssql中的数据导出为csv文件,再用java编写个程序,修改csv文件中主键值,然后再导入mssql不知道可行不?
有更好的方法吗?