【发布时间】:2017-05-13 15:32:51
【问题描述】:
我有一个 30 GB 的制表符分隔文本文件,有 11 列。我想将它导入到单列 PostgreSQL 表中。我该怎么做?
我应该在 \copy 命令中为分隔符变量添加什么?每个字符都可能存在于文本文件中。如何强制 PostgreSQL 将该文件视为单列文件?
以下是数据的前 5 行,有些行不是英文的,可以是任何语言。
01B27BE8 Evaluating Polarity for Verbal Phraseological Units evaluating polarity for verbal phraseological units 2014 2014/11/16 10.1007/978-3-319-13647-9_19 mexican international conference on artificial intelligence micai 42D7146F 19517
027D0030 Automatic Monitoring the Content of Audio Broadcasted by Internet Radio Stations automatic monitoring the content of audio broadcasted by internet radio stations 2012 2012/10/27 10.1007/978-3-642-37807-2_11 mexican international conference on artificial intelligence micai 42D7146F 19444
7CFE299E Towards a set of Measures for Evaluating Software Agent Autonomytowards a set of measures for evaluating software agent autonomy 2009 2009/11 10.1109/MICAI.2009.15 mexican international conference on artificial intelligence micai 42D7146F 18870
59BEBE1C Learning Probability Densities of Optimization Problems with Constraints and Uncertainty learning probability densities of optimization problems with constraints and uncertainty 2008 2008/10/27 10.1007/978-3-540-88636-5_25 mexican international conference on artificial intelligence micai 42D7146F 19444
5873C011 Towards a Model for an Immune System towards a model for an immune system 2002 2002/04/22 10.1007/3-540-46016-0_42 mexican international conference on artificial intelligence micai 42D7146F19177
【问题讨论】:
-
首先,将 11 列放入表中的单列并不是一个好主意。并为您提供解决方案,请尝试使用 \n 作为分隔符。
-
更改文件,将列合并成一个大 CSV,只包含一列。 (使用 bash stackoverflow.com/questions/19602181/…)然后使用 Copy。
-
@Viki888 我需要先将数据导入单列临时表,然后我会更改它。关于 '\n' 分隔符,我认为它会导致整个文件成为一个包含 1 亿列的单行文件。 (我的文本文件有 1 亿行)
-
@RaminZahedi 你能提供你文件的一些数据吗?
-
你确定你例如有一个
\b(“退格”)作为数据的一部分?
标签: sql postgresql text