2015-03-02 111 views
0

我正在创建一个表,并且想要导入(加载到postgres)一些列有一些缺失值(空单元格)的制表符分隔文件。我希望这些单元格保持空白(或者可能将它们转换为NULL,同时执行加载/或之后/或将它们留空)。导入丢失一些浮点类型值的csv数据表

我曾尝试下面的脚本:

CREATE TABLE Conclusive_wg_H3K9me3_dn 
(
Conclusive_wg_K9me3_DN_sorter float,  
Conclusive_wg_K9me3_DN_geneid character(80) NOT NULL, 
Conclusive_wg_K9me3_DN_bvi_srt float, 
Conclusive_wg_K9me3_DN_cbk_srt float, 
Conclusive_wg_K9me3_DN_dj_srt float,  
Conclusive_wg_K9me3_DN_evj_srt float, 
Conclusive_wg_K9me3_DN_flv_srt float, 
Conclusive_wg_K9me3_DN_ghw_srt float, 
Conclusive_wg_K9me3_DN_gvz_srt float, 
Conclusive_wg_K9me3_DN_srr_srt float, 
Conclusive_wg_K9me3_DN_AllCount float, 
Conclusive_wg_K9me3_DN_PercentAllCount float, 
Conclusive_wg_K9me3_DN_DynamicCounat float,  
Conclusive_wg_K9me3_DN_PercentDynamic float,  
Conclusive_wg_K9me3_DN_GeneName character(80) NOT NULL, 
Conclusive_wg_K9me3_DN_RankSorting float, 
Conclusive_wg_K9me3_DN_NewScore float, 
CONSTRAINT Conclusive_wg_K9me3_DN_geneid PRIMARY KEY (Conclusive_wg_K9me3_DN_geneid) 
); 
COPY Conclusive_wg_H3K9me3_dn FROM 'G:\CarrollLab\Teena\ConsolidationWithMethylationData_NoiseBelow32Removed\FromPostgreSQLdb\FigsAndTangentWholeGenes\DynamicWholeGeneValues\OutputFromPostgres\ConclusiveDynamicGenes\Conclusive_wg_H3K9me3_dn.txt' WITH (FORMAT 'csv', DELIMITER E'\t', NULL 'NULL',HEADER); 

如果我使用文本分隔的文件中的所有行都浮点值执行该脚本,导入过程的工作就好了!没有麻烦。

但是,在尝试使用一个文件有几个空单元格(缺少一些浮点值的),我遇到了以下错误味精来运行它:

ERROR: invalid input syntax for type double precision: "" 
CONTEXT: COPY conclusive_wg_h3k9me3_dn, line 9, column conclusive_wg_k9me3_dn_flv_srt: "" 
********** Error ********** 

ERROR: invalid input syntax for type double precision: "" 
SQL state: 22P02 
Context: COPY conclusive_wg_h3k9me3_dn, line 9, column conclusive_wg_k9me3_dn_flv_srt: "" 

事实上,我在9号线txt分隔的文件在其一列中缺少数据(空单元格)。

我是否必须先将EXCEL中的所有空表格单元格替换为字符串“NULL”?... 浮点类型是否能识别NULL字符串?

或者我可以使postgres以某种方式理解如何处理空单元格而不用用其他方法替换空值?

如何解决这个问题? 谢谢! Roy

回答

0

好的,问题解决了!

我应该将NULL分类从'NULL'更改为'',因此:(请参见底部): WITH(FORMAT'csv',DELIMITER E''t',NULL'',HEADER );

CREATE TABLE Conclusive_wg_H3K9me3_dn 
(
Conclusive_wg_K9me3_DN_sorter float,  
Conclusive_wg_K9me3_DN_geneid character(80) NOT NULL, 
Conclusive_wg_K9me3_DN_bvi_srt float, 
Conclusive_wg_K9me3_DN_cbk_srt float, 
Conclusive_wg_K9me3_DN_dj_srt float,  
Conclusive_wg_K9me3_DN_evj_srt float, 
Conclusive_wg_K9me3_DN_flv_srt float, 
Conclusive_wg_K9me3_DN_ghw_srt float, 
Conclusive_wg_K9me3_DN_gvz_srt float, 
Conclusive_wg_K9me3_DN_srr_srt float, 
Conclusive_wg_K9me3_DN_AllCount float, 
Conclusive_wg_K9me3_DN_PercentAllCount float, 
Conclusive_wg_K9me3_DN_DynamicCounat float,  
Conclusive_wg_K9me3_DN_PercentDynamic float,  
Conclusive_wg_K9me3_DN_GeneName character(80) NOT NULL, 
Conclusive_wg_K9me3_DN_RankSorting float, 
Conclusive_wg_K9me3_DN_NewScore float, 
CONSTRAINT Conclusive_wg_K9me3_DN_geneid PRIMARY KEY (Conclusive_wg_K9me3_DN_geneid) 
); 
COPY Conclusive_wg_H3K9me3_dn FROM 'G:\CarrollLab\Teena\ConsolidationWithMethylationData_NoiseBelow32Removed\FromPostgreSQLdb\FigsAndTangentWholeGenes\DynamicWholeGeneValues\OutputFromPostgres\ConclusiveDynamicGenes\Conclusive_wg_H3K9me3_dn.txt' WITH (FORMAT 'csv', DELIMITER E'\t', NULL '',HEADER);