2010-06-22 100 views
1

我有一个使用OLEDB FastLoad将表从Oracle导入到SQL 2008的ETL。 Oracle中的数据是非Unicode。 当在SQL中创建表时,它使用unicode数据类型创建。 由于某种原因,数据类型被强制从非unicode转为unicode。 你们有没有人知道阻止这种事情发生的方法? 可能是Oracle驱动程序问题?Oracle - > SQL - 强制从非unicode转换为unicode?

回答

0

我假设你正在使用SSIS?

猜猜看,SSIS希望一切都是unicode,因此它假设所有传入的数据都是unicode。如果您不希望它是unicode,则需要使用数据转换任务转换每个字段。

+0

是的。 SSIS。 越读越多,我意识到这是事实。 感谢您的信息。 – EWizard 2010-06-23 12:39:50

+0

刚刚实现了源和目标之间的数据转换,并且表现非常出色。感谢您的高举。 – EWizard 2010-06-23 16:54:29

+0

仅供参考 - 我们让我们的ETL操作昨晚运行,表演击毙了我们!我们的旧流程是将数据从Oracle移动到Unicode SQL表格,然后将数据抽取到Non_Unicode SQL表格(使用隐式转换)。这种方式只需要大约2个小时即可运行。 那么使用源和目标之间的数据转换转换的新方式运行了8个多小时。失败。 Geez SSIS很痛苦。 – EWizard 2010-06-24 15:18:59

0

这是你可能想尝试的东西。检查要导入到的Oracle数据库中的NLS_LANG变量的值。在运行ETL之前更改此变量可以帮助您。

检查NLS_LANG常见问题在这里: http://www.oracle.com/technology/tech/globalization/htdocs/nls_lang%20faq.htm

+0

从Oracle导入SQL。 – EWizard 2010-06-22 21:00:58

+0

仍然是一个有效的答案。 Oracle会将数据库中的字符转换为查询数据的客户端的字符集(因为在过去,有些客户端不需要显示花哨的字符)。 – 2010-06-22 23:20:10

+0

是的,仍然有效的答案。我认为,尽管我将不得不在SSIS中的SQL方面处理这个问题。 谢谢你的回答。 – EWizard 2010-06-23 13:04:18