2012-04-04 40 views
0

我有一个约140列的表。该表的数据来自事务性系统,许多列是Unicode。缓慢的数据加载与从nvarchar转换为varchar

我将日常负载转储到我的Staging数据库,该数据库的数据类型完全匹配源系统的数据类型。从Staging中,我执行一些清理并将其加载到Reports数据库。从分段加载到报表数据库时,我将所有Unicode字符数据转换为字符串,然后将其加载到报表数据库。这个过程花费了很多时间,我试图优化这个过程(加快加载速度)。

我使用派生列转换将所有Unicode数据转换为字符串数据。任何建议在这里给我?

+1

为什么不在报告数据库上使用unicode所以你不必转换数据? – HLGEM 2012-04-04 15:39:36

+0

两倍的空间? – Diego 2012-04-04 15:49:02

+0

这是我越来越困惑的地方。使用NVARCHAR会以任何方式伤害任何东西吗?例如说,查询运行时间或记录占用的空间?使用NVARCHAR或VARCHAR的任何性能优势/劣势? – rvphx 2012-04-04 15:54:59

回答

0

如果您在源查询中将列转换为varchar(size),那么该怎么办?

+0

无法做到这一点。我从中提取的数据库有一个特定的ODBC驱动程序,它不支持SELECT以外的任何SQL函数。我知道那很奇怪,但那就是它。我已经尝试过CAST,但由于驾驶员无能为力,无法改变任何事情。 – rvphx 2012-04-04 15:52:53

+0

甚至不在SSIS Sorce组件内?你如何运行查询来获取数据? – Diego 2012-04-04 15:55:04

+0

我使用SSIS ADO.NET源组件连接到源。我在连接到源系统的盒子上有一个DSN。我尝试过操纵源输入/输出数据类型,但是驱动程序非常歪曲,以至于爆炸。 – rvphx 2012-04-04 15:56:19