Sql server 从SQL Server导出要导入到Oracle 10g的表

Sql server 从SQL Server导出要导入到Oracle 10g的表,sql-server,oracle,migrate,Sql Server,Oracle,Migrate,我正在尝试从SQLServer2005导出一些表,然后创建这些表并在Oracle中填充它们 我有大约10个表,从4列到25列不等。我没有使用任何约束/关键点,因此这应该是合理的直截了当 首先,我生成脚本以获得表结构,然后修改它们以符合Oracle语法标准(即将nvarchar更改为varchar2) 接下来,我使用SQL Server导出向导导出数据,该向导创建了一个csv平面文件。然而,我的主要问题是,我找不到一种方法来强制SQLServer对列名进行双引号引用。我的一列包含逗号,因此,除非我

我正在尝试从SQLServer2005导出一些表,然后创建这些表并在Oracle中填充它们

我有大约10个表,从4列到25列不等。我没有使用任何约束/关键点,因此这应该是合理的直截了当

首先,我生成脚本以获得表结构,然后修改它们以符合Oracle语法标准(即将nvarchar更改为varchar2)

接下来,我使用SQL Server导出向导导出数据,该向导创建了一个csv平面文件。然而,我的主要问题是,我找不到一种方法来强制SQLServer对列名进行双引号引用。我的一列包含逗号,因此,除非我能找到SQL server引用列名的方法,否则在导入此列时,我将遇到麻烦

还有,我是在走艰难的道路,还是有更简单的方法

谢谢

编辑:通过引用,我指的是引用csv中的列值。例如,我有一列包含如下地址

高街101号,某地,某地 县,PO5TC053

如果不将其更改为以下内容,则在加载CSV时会导致问题

“101号大街,某个城镇,某个城市 县,PO5TC053“


我认为在oracle中引用列名是不应该使用的。它会引起各种各样的问题。

正如罗伯特所说,我强烈建议再次引用列名。结果是,不仅在导入数据时,而且在希望在SQL语句中引用该列时,都必须引用它们——是的,这可能意味着在程序代码中也是如此。构建SQL语句变得非常麻烦

从你写的内容来看,我不确定你指的是列名还是这些列中的数据。(SQLServer真的可以在列名称中使用逗号吗??如果有很好的理由,我会非常惊讶!)引用列内容应该针对任何类似字符串的列(尽管我发现其他字符通常工作得更好,因为需要“转义”引号成为另一个问题)。如果您是以CSV格式导出,那么这应该是一个选项。。但是我对导出向导并不熟悉


移动数据的另一个想法(取决于项目的规模)是使用ETL/EAI工具。我一直在玩Pentaho套件和他们的水壶组件。它提供了一系列将数据从一个地方移动到另一个地方的选项。对于一个简单的传输来说,它可能有点过大,但是如果它是一个带有相应卷的大型“迁移”,那么它可能是一个不错的选择。

在使用SQLDeveloper查看了一些选项之后,或者要手动尝试导出/导入,我在SQL Server management studio上发现了一个实用程序,它可以获得所需的结果,并且易于使用,请执行以下操作

  • 转到SQL Server上的源架构
  • 右键单击>导出数据
  • 选择源作为当前架构
  • 选择目标作为“Oracle OLE提供程序”
  • 选择属性,然后将服务名称添加到第一个框中,然后选择用户名和密码,确保单击“记住密码”
  • 输入query以获取要迁移的所需结果
  • 输入表格名称,然后单击“编辑”按钮
  • 更改映射,将nvarchars更改为varchar2,将INTEGER更改为NUMBER
  • 对其余的表重复此过程,如果以后需要再次执行此操作,请另存为作业