将CSV文件导入postgresql

时间:2017-11-16 08:18:32

标签: java postgresql

我想使用copy命令导入大约1GB大小的大型csv文件。 但条件是如果让我们看到列A1数据类型是数字,而csv文件的数据也是数字类型,但有些值是字母数字。所以它不进口。 我想要的是将colum A1的非数字值设置为null并导入数据。 复制命令中我想要的所有条件。 csv文件的示例。

<table border=true>
<tr>
<th >A1</th>
<th>A2</th>
<th>A3</th>
</tr>
<tr>
<td>90</td>
<td>91</td>
<td>92</td>
</tr><tr>
<td>A21</td>
<td>B23</td>
<td>C43</td>
</tr><tr>
<td>12</td>
<td>13</td>
<td>14</td>
</tr>
<tr>
<td>12ddwd3</td>
<td>1yhh53</td>
<td>1dfsf754</td>
</tr>
<tr>
<td>12</td>
<td>13</td>
<td>14</td>
</tr>
</table>

表元数据将是A1数字,A2数字,A3数字 我想将csv文件导入表中,非数值将设置为Null。

1 个答案:

答案 0 :(得分:0)

你不能从文件中条件COPY表。你能做什么呢?

create table t (a1 text, a2 text, a3 text);
COPY t from file;
update t set a1 = null where a1 !~ '^\d{1,}$';
alter table t alter column a1 type int using a1::int;