我有一个。dmp文件(oracle数据),我必须将此文件导入SQL Server 2008 R2。我试过谷歌,但没有得到明确的解决方案。Oracle在另一台机器上,SQL Server在另一台机器上。这个. dmp文件只有表和数据,没有别的了。
有人知道吗?
你无法从这里到达那里。Oracle导出实用程序(classic或DataPump)生成的文件(按照惯例,它们经常使用DMP扩展名)是专有二进制文件。它们只能被Oracle import实用程序(classic或DataPump)使用,该实用程序只允许您将数据加载到另一个Oracle数据库。
你可以将DMP文件加载到一个新的Oracle数据库中,但是你仍然需要将数据从Oracle移动到SQL Server。忽略DMP文件并直接从原始Oracle数据库中提取可能更容易。有多种工具可用于将数据从Oracle数据库移动到SQL Server数据库。如果你想让SQL Server控制这个过程,你可以使用SQL Server集成服务(SSIS)。您还可以在SQL server中创建一个链接服务器,该服务器引用Oracle数据库,并通过该连接编写针对Oracle数据库的查询。如果你想让Oracle推送数据,你也可以使用Oracle透明网关与异构服务来创建一个从Oracle到SQL Server的数据库链接,并对远程SQL Server数据库发出SQL。
有一个很好的StackOverflow线程移动数据从Oracle到SQL Server。SSIS逻辑是非常相似的,如果你从Oracle拉到SQL Server或从SQL Server推到Oracle。
Oracle dump不能被SQL读取。
不可能,但你有不同的解决方案
- SQL server集成服务(SSIS)
- 连接oracle和SQL (oracle网关),但它与SQL Ent一起工作。
- 将oracle中的数据以带分隔符的格式导出,然后插入到SQL中,但如果数据非常大,则需要花费一些时间。
当我遇到同样的问题时,我尝试手动调查格式(在我的情况下,转储文件是由Oracle EXP生成的)。我发现:
- 表定义来自Oracle的CREATE Table语句,可以很容易地转换为MS SQL格式
- 大多数类型的数据可以很容易地提取(文本"原样",数值根据IEEE 754格式存储)
- lob的存储方式很复杂,我没能识别出来
然后我找到了能够执行迁移任务的工具:https://www.convert-in.com/ord2mss.htm
供应商说它可以迁移exp和expdp到sql server,但我只测试了exp格式。