我们正在尝试将数据从外部源 (mssql) 提取到 postgres。但是,当我检查发票日期列条目同时变得空白时,MSSQL 显示这些条目的发票日期值。
即 我们在两个 DBMS 上尝试了以下查询:
在 SQL Server 中执行查询时:
select * from tablename where salesorder='168490'
获取 12 行,其中发票日期列为 '2015-10-26 00:00:00.000'
但是在 Postgres 上执行相同的查询
select "InvoceDt" from tablename where salesorder='168490'
获取 12 行,其中发票日期列为空。
问题是为什么?
Postgres InvoiceDt
列变为 null,而不是我们看到 SQL Server 显示了适当的数据值。
为什么 SQL Server 和 Postgres 之间此特定列的数据不同?
最佳答案
Vicps,你没有使用 Postgres,这就是为什么 a_horse_with_no_name 很难理解你的问题。您正在使用 Pivotal HDB(正式名称为 HAWQ)。 HAWQ 现在与孵化器项目“Apache HAWQ”相关联,商业版本是“Pivotal HDB”。
Pivotal HDB 是 Pivotal Greenplum 数据库的一个分支,而 Pivotal Greenplum 数据库是 PostgreSQL 8.2 的一个分支。它与 Postgres 有很多相似之处,但它绝对不是 Postgres。
您还使用 Spring-XD 将数据从 SQL Server 移动到 HDFS,这对于理解真正的问题至关重要。
您提供了这个示例:
CREATE TABLE tablename ( "InvoiceDt" timestamp )
LOCATION ('pxf://hostname/path/to/hdfs/?profile=HdfsTextSimple')
FORMAT 'csv' ( delimiter '^' null 'null' quote '~');
您的文件中只有一栏?这怎么可能?上面,您提到了 salesorder 列。其次,您是否尝试过查看 Spring-XD 编写的文件?
hdfs dfs -cat hdfs://hostname:8020/path/to/hdfs | grep 168490
我敢打赌,数据中存在额外的分隔符、空字符或转义字符,从而导致了问题。您可能还想用 spring-xd 标记您的问题。
关于sql-server - 如何在 DBMS 迁移时避免 MSSQL INTO PIVOTAL HAWQ 的日期类型列为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33431453/