sql-server - 如何在 DBMS 迁移时避免 MSSQL INTO PIVOTAL HAWQ 的日期类型列为空

标签 sql-server data-conversion hawq

我们正在尝试将数据从外部源 (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/

相关文章:

go - 如何将接口(interface) {} 转换为结构

Hadoop - Hawq - 添加新段

hadoop - HAWQ 表大小估计

sql - 如何只选择表中的每第 n 行?

c# - 获取 Entity Framework 中的总行数

sql-server - 在sql server中查询一个xml(存储在varchar中)

go - 从[]个字节中解析浮点值的最佳方法是什么?

c# - 如何通过 float 表示形式将 float 转换为 int?

linux - Greenplum 安全 : How do i setup Password-less Login: Windows (via Putty) to Linux(greenplum master machine-centos6. 5) 在 gpdb 集群中

c# - SqlCommand 的输入输出参数