2016-06-11 34 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)