2017-04-05 52 views
0

我有一些数据是从PostgresSQL数据库(据说使用pg_dump)转储的,需要导入到SQL Server中。
虽然数据类型没问题,但我遇到了一个问题,那里似乎有NULL的占位符。我在许多字段中看到一个反斜杠,后面跟着一个大写的N。以下是从Excel中查看的数据片段。左列具有布尔数据类型,和右一个具有整数作为数据类型将PostgresSQL转储到SQL Server - 数据类型错误

Snippet of the data, as viewed from within Excel. Left column has a Boolean data type, and the right one has an integer as the data type

有些应该是布尔数据类型的,并且具有两个字符中存在肯定不是要飞。

这里是我试过到目前为止:

  1. 通过脏读导入 - 保存任何数据类型SSIS决定每场了;无济于事。所有布尔字段都有关于截断的错误消息。
  2. 根据正确的数据类型为数据创建一个表格,尽管这样做更有趣......我需要做的和在脏读中一样,否则源代码将无法正确加载。还需要将数据转换为正确的数据类型以便插入到目标数据源中;然而,我正在得到截断问题,当它肯定不应该。
    下面是我的派生列转换编辑器中的示例表达式:
    (DT_BOOL)REPLACE(observation,"\\N","")
    数据类型应该是布尔值。

任何建议将非常有帮助!

谢谢!

+1

为什么不直接用文本编辑器替换文件中的'\ N'? – cha

+0

@cha,如果这是一次性交易,我会马上做一个查找/替换;但是,如果数据看起来不错,这可能会变成一个长期的自动化过程,显然,我不能按照您的建议做。我应该把这个问题提出来。 – Eli

回答

0

由于我无法绕过SSIS规则以便将数据无误地存入我的表格,所以我采用了快速而又脏的方法。
为我工作的解决方案是让源数据读取每列,就好像它是一个字符串,并且目标表中的所有字段都是数据类型VARCHAR。这个目的地表格将用作临时表格,一旦在SS中,我可以根据需要进行操作。

谢谢@cha您的意见。

相关问题