我正在尝试从SQL Server 2005导出一些表,然后创建这些表并在Oracle中填充它们。
我有大约10个表,从4列到25列不等。我没有使用任何约束/键,所以这应该是相当直接的。
首先,我生成脚本来获取表结构,然后修改它们以符合Oracle语法标准(即将nvarchar更改为varchar2)
接下来,我使用SQL Server导出向导导出数据,该向导创建了一个csv平面文件。但是我的主要问题是我找不到强制SQL Server双引号列名的方法。我的一个列包含逗号,所以除非我能找到一个SQL服务器引用列名的方法,否则在导入时会遇到麻烦。
另外,我是走困难的路线,还是有更简单的方法呢?
由于
编辑:引用我引用引用csv中的列值。例如,我有一个包含
等地址的列101 High Street,Sometown,Some 县,PO5TC053
如果不将其更改为以下内容,则在加载CSV时会出现问题
“101 High Street,Sometown,Some 县,PO5TC053“
答案 0 :(得分:4)
在使用SQLDeveloper查看某些选项或手动尝试导出/导入后,我在SQL Server管理工作室上找到了一个实用程序,它可以获得所需的结果,并且易于使用,请执行以下操作
答案 1 :(得分:1)
Use the SQLDeveloper migration tools
我认为引用oracle中的列名是你不应该使用的。它会导致各种各样的问题。
答案 2 :(得分:1)
正如罗伯特所说,我强烈建议再次引用列名。结果是,您不仅要在导入数据时引用它们,还要在SQL语句中引用该列时引用它们 - 是的,这可能也意味着在您的程序代码中。构建SQL语句变得非常麻烦!
根据您的撰写内容,我不确定您是在引用列名还是这些列中的数据。 (SQLServer真的可以在列 名称 中使用逗号吗?如果有充分理由,我会感到非常惊讶!)引用列内容应该是为了任何类似字符串的列(虽然我发现其他字符通常效果更好,因为需要“转义”引号成为另一个问题)。如果您要导出CSV应该是一个选项..但是我不熟悉导出向导。
移动数据的另一个想法(取决于项目的规模)将是使用ETL / EAI工具。我和Pentaho套件以及他们的Kettle组件一直在玩。它提供了一系列将数据从一个地方移动到另一个地方的选项。对于简单的传输,它可能有点过大,但如果它是相应卷的大“迁移”,那么它可能是一个不错的选择。