我们需要将大量数据(大约1 GB)从UNIX服务器上的Oracle数据库复制到MS SQL Server2008Windows中的表(在r2服务器上运行)。此任务将定期重复,而不仅仅是一次性作业。
我们有将数据导出到文本文件的代码,但这些文件是在UNIX服务器上生成的。
我们有导入文本文件的代码(批量插入),但这似乎只有在文件位于Windows服务器上时才有效(批量插入需要UNC)。
物理复制文件会占用大量资源。写一次再读一次要好得多。
做这件事最好的方法是什么?Oracle有没有办法将文件写入Windows网络位置?有没有办法让MS SQL Server2008UNIX从r2服务器上读取文本文件?有没有完全不同的方法呢?
发布于 2019-01-11 15:06:10
甲骨文有没有办法把文件写到
网络上?有没有办法让MS SQL Server2008UNIX从r2服务器上读取文本文件?
是的,它被称为Samba。
有没有完全不同的方法?
Create a linked server。这将允许SQL Server查询Oracle服务器并获取数据,而无需将其保存到文件中。
若要创建链接服务器,必须在SQL server上安装Oracle Data Access Components。然后,您必须将Oracle provider配置为在SQL Server进程内部运行并接受参数:
exec master.dbo.sp_MSset_oledb_prop 'ORAOLEDB.Oracle', N'AllowInProcess', 1
exec master.dbo.sp_MSset_oledb_prop 'ORAOLEDB.Oracle', N'DynamicParameters', 1 然后创建链接服务器定义:
exec sp_addlinkedserver N'MyOracle', 'Oracle', 'ORAOLEDB.Oracle', N'//1.2.3.4/xe', N'FetchSize=2000', ''
exec master.dbo.sp_serveroption @server=N'MyOracle', @optname=N'rpc out', @optvalue=N'true'
exec sp_addlinkedsrvlogin @rmtsrvname='MyOracle', @useself=N'FALSE', @rmtuser=N'system', @rmtpassword='xxxxxx' 如果一切配置正确,您可以直接查询Oracle服务器:
exec ('select 1 a from dual') at MyOraclehttps://stackoverflow.com/questions/54135773
复制相似问题