- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我想使用外部表将普通文件加载到 Greenplum 数据库中。我可以为时间戳/日期/时间字段指定输入格式吗? (如果你知道PostgreSQL的答案,请一并回复)
例如,对于 Oracle,我可以使用 DATE_FORMAT DATE MASK 'YYYYMMDD' 来说明如何解析日期。对于 Netezza,我可以指定 DATESTYLE“YMD”。对于 Greenplum,我找不到答案。我可以将字段描述为 char,然后在加载期间解析它们,但这是一个丑陋的解决方法。
这是我的暂定代码:
CREATE EXTERNAL TABLE MY_TBL (X date, Y time, Z timestamp )
LOCATION (
'gpfdist://host:8001/file1.txt',
'gpfdist://host:8002/file2.txt'
) FORMAT 'TEXT' (DELIMITER '|' NULL '')
最佳答案
看起来你可以:
SET DATESTYLE = 'YMD';
在从表中SELECT
之前。但是,这将影响所有日期的解释,而不仅仅是文件中的日期。如果您在其他地方始终使用明确的 ISO 日期,那会很好,但如果(例如)您还需要在同一查询中接受“D/M/Y”日期文字,则可能会出现问题。
这特定于 GreenPlum 的CREATE EXTERNAL TABLE
,不适用于 SQL 标准 SQL/MED
外部数据包装器,如下所示。
让我感到惊讶的是 PostgreSQL 本身(它没有这个 CREATE EXTERNAL TABLE
特性)总是接受 ISO 风格的 YYYY-MM-DD
和 YYYYMMDD
日期,与 DATESTYLE
无关。观察:
regress=> SELECT '20121229'::date, '2012-12-29'::date, current_setting('DateStyle');
date | date | current_setting
------------+------------+-----------------
2012-12-29 | 2012-12-29 | ISO, MDY
(1 row)
regress=> SET DateStyle = 'DMY';
SET
regress=> SELECT '20121229'::date, '2012-12-29'::date, current_setting('DateStyle');
date | date | current_setting
------------+------------+-----------------
2012-12-29 | 2012-12-29 | ISO, DMY
(1 row)
...因此,如果 GreenPlum 的行为方式相同,则无需执行任何操作即可从输入文件中正确读取这些 YYYYMMDD
日期。
这是它如何与 PostgreSQL 一起工作 file_fdw
SQL/MED
foreign data wrapper :
CREATE EXTENSION file_fdw;
COPY (SELECT '20121229', '2012-12-29') TO '/tmp/dates.csv' CSV;
SET DateStyle = 'DMY';
CREATE SERVER csvtest FOREIGN DATA WRAPPER file_fdw;
CREATE FOREIGN TABLE csvtest (
date1 date,
date2 date
) SERVER csvtest OPTIONS ( filename '/tmp/dates.csv', format 'csv' );
SELECT * FROM csvtest ;
date1 | date2
------------+------------
2012-12-29 | 2012-12-29
(1 row)
CSV 文件内容为:
20121229,2012-12-29
因此您可以看到 Pg 将始终接受 CSV 的 ISO 日期,而不管数据样式如何。
如果 GreenPlum 没有,请提交错误。 DateStyle
改变创建后读取外部表的方式的想法很疯狂。
关于database - 在 Greenplum (PostgreSQL) 中格式化外部表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13234818/
我们有一个相当大的 Greenplum v4.3 集群。 18台主机,每台主机有3个segment节点。每台主机大约有40个核心和60G内存。 我们的表有 30 列宽,有 1 亿行。我们正在测试的查询
我们有零售行业数据的用例。我们正在制作 EDW。 我们目前正在从 HAWQ 进行报告。但是我们想将我们的 MPP 数据库从 Hawq 转移到 Greenplum。基本上,我们想对当前的数据管道进行更改
我们有小型 gpdb 集群。在那里,我们正在尝试设置 Greenplum 指挥中心门户网站。 环境是 产品 |版本 Pivotal Greenplum (GPDB) 4.3.x Pivotal Gre
我们有小型 GPDB 集群阵列。我们最近升级了 GPDB 并配置了 GCC 门户网站。在那,我们注意到我们的机器在 SSH 时仍然显示密码。 我们尝试在 greenplum 机器上执行以下文档命令:
我想知道当我们将pxf和datanode放在同一主机上时,Greenplum PXF是否可以利用HDFS短路读取的优势。 我们进行了初步测试,但是,pxf似乎没有利用短路读数。谷歌搜索后几乎没有任何东
在greenplum中如何配置生成gphdfs.so?当我 postgres=# CREATE EXTERNAL TABLE csv_hdfs_lineitem (like a) LOCATION (
假设我在 psql 上运行以下查询: > select a.c1, b.c2 into temp_table from db.A as a inner join db.B as b > on a.x
假设我在 psql 上运行以下查询: > select a.c1, b.c2 into temp_table from db.A as a inner join db.B as b > on a.x
有没有办法强制 Greenplum PostgreSQL 在 WITH 子句中具体化子查询,例如 MATERIALIZE 和 INLINE optimizer hints在 Oracle 中执行以下操
我正在尝试创建一种将批量日期查询转换为增量查询的方法。例如,如果查询将 where 条件指定为 WHERE date > now()::date - interval '365 days' and d
假设我有一个很长的 URL xyz = 'www.google.com/xyz?para1=value1¶2=value2¶3=value3....' 我正在尝试从这个长 URL 中获
我在 Greenplum(4.3.5.1) 中有一个表,我想删除最初使用主键约束创建的约束。我尝试这样做,但查询运行了 2-3 小时,我已取消它,因为没有其他选择, 然后我进行了备份并尝试删除表,但查
我在 Greenplum 中编写了一个 PL/pgSQL 函数,该函数需要翻译 interval哪个< interval '00:00:00'为正值。 例如区间值-23:57:00应该翻译成00:03
我正在使用 Greenplum,我有这样的数据: id | val ----+----- 12 | 12 12 | 23 12 | 34 13 | 23 13 | 34 13
我连接了一个greenplum,我发现pdo太慢了 我的测试脚本是这样的 = '2017-01-17' and date query($sql); $end = microtime(true); #v
我正在尝试将数据从 Greenplum 外部表插入到物理(或普通表)表中。外部表指向一个包含大约 1.32 亿数据的配置单元文件。但是,当我的外部表显示只有 6600 万的计数时。结果,当插入物理表时
支持和反对使用 Greenplum 的论据是什么?而不是 PostgreSQL在 webapp (django) 环境中? 我的直觉 react 是更喜欢 PostgreSQL 的开源方法和庞大的知识
我想知道,是否可以使用 PostgreSQL 将数据从 Greenplum 中的表导出到 CSV 但到远程服务器,或者 CSV 的传输必须手动完成(或通过脚本)。 最佳答案 Greenplum 有一个
我正在查看这两个大规模并行数据库:Postgres-XL和 Greenplum . 问题是,我不知道如何在它们之间做出选择,因为它们看起来都一样:都是开源的,基于 PostgreSQL,都使用 MPP
这种情况下的主要困难是来自 Greenplum 数据库的磁盘空间不足错误。我们在 Amazon Linux 机器上运行 Greenplum 数据库 4.2.0.0。 调查显示如下: 1) Greenp
我是一名优秀的程序员,十分优秀!