2016-06-11 70 views
0

PostgreSQL在哪里存储在选择期间从外部表中丢弃的记录?我有以下表格:PostgreSQL:外部表和废弃记录

CREATE FOREIGN TABLE ext.alternatenamesext (
    altid BIGINT, 
    geoid BIGINT, 
    isolanguage VARCHAR(7), 
    alternatename TEXT, 
    ispreferredname INTEGER, 
    isshortname INTEGER, 
    iscolloquial INTEGER, 
    ishistoric INTEGER 
) 
SERVER edrive_server 
OPTIONS (
    delimiter E'\t', 
    encoding 'UTF-8', 
    filename '/mnt/storage/edrive/data/alternateNames.txt', 
    format 'csv'); 

alternateNames.txt包含〜11 mln记录。但是当我做“SELECT * FROM ext.alternatenamesext”时,它只返回〜9.5mln记录。剩下的2毫米是哪里?有没有办法把它们放到单独的文件中,比如Oracle的sql * ldr?

+0

我不认为它“supresses”行 - 它开始跳绳我”检查行 - 大概解析CSV错误d说 –

+0

注意:一些CSV记录可能是几行。如果你的数据损坏了,这可能发生在不需要的地方。 – Jasen

回答

0

问题已经由创建外部表的语法如下解决...:

CREATE FOREIGN TABLE ext.alternatenamesext (
    altid BIGINT, 
    geoid BIGINT, 
    isolanguage VARCHAR(7), 
    alternatename VARCHAR(400), 
    isPreferredName INT, 
    isShortName INT, 
    isColloquial INT, 
    isHistoric INT 
) 
SERVER edrive_server 
OPTIONS (
    delimiter E'\t', 
    encoding 'UTF-8', 
    filename '/mnt/storage/edrive/data/alternateNames.txt', 
    format 'text', -- not 'csv'! 
    null ''); -- eliminate null values (some kind of TRAILING NULLCOLLS in Oracle I guess)