首页 > 解决方案 > Postgres - 使用 \COPY 强制数字列中的 NULL 值

问题描述

我正在将大型 CSV 写入 Postgres 表。这些列是数据类型的混合。有些是数字,其中一些数字列包含空单元格。

这是一个示例行。(您必须单击“运行代码片段”才能看到示例行的良好视图。)

<style type="text/css">
	table.tableizer-table {
		font-size: 12px;
		border: 1px solid #CCC; 
		font-family: Arial, Helvetica, sans-serif;
	} 
	.tableizer-table td {
		padding: 4px;
		margin: 3px;
		border: 1px solid #CCC;
	}
	.tableizer-table th {
		background-color: #104E8B; 
		color: #FFF;
		font-weight: bold;
	}
</style>
<table class="tableizer-table">
<thead><tr class="tableizer-firstrow"><th>cert</th><th>docket</th><th>fed_rssd</th><th>rssdhcr</th><th>name</th><th>city</th><th>stalp</th><th>zip</th><th>repdte</th><th>rundate</th><th>bkclass</th><th>address</th><th>namehcr</th><th>offdom</th><th>offfor</th><th>stmult</th><th>specgrp</th><th>subchaps</th><th>county</th><th>cbsa_metro</th><th>cbsa_metro_name</th><th>estymd</th><th>insdate</th><th>effdate</th><th>mutual</th><th>parcert</th><th>trust</th><th>regagnt</th><th>insagnt1</th><th>fdicdbs</th><th>fdicsupv</th><th>fldoff</th><th>fed</th><th>occdist</th><th>otsregnm</th><th>inst.webaddr</th><th>P3GTYPAR</th><th>P3GTY</th><th>P3GTYGNM</th><th>P9GTYPAR</th><th>P9GTY</th><th>P9GTYGNM</th><th>NAGTYPAR</th><th>NAGTY</th><th>NAGTYGNM</th></tr></thead><tbody>
 <tr><td>16419</td><td>0</td><td>419255</td><td>1055780</td><td>1st Bank & Trust</td><td>Broken Bow</td><td>OK</td><td>74728</td><td>12/31/1992</td><td>8/4/2016</td><td>NM</td><td>210 North Broadway</td><td>SOUTHEASTERN BANCSHARES, INC.</td><td>3</td><td>0</td><td>0</td><td>8</td><td>0</td><td>Mccurtain</td><td>&nbsp;</td><td>&nbsp;</td><td>5/6/1946</td><td>5/6/1946</td><td>10/13/1997</td><td>Stock</td><td>0</td><td>1</td><td>FDIC</td><td>BIF</td><td>Dallas</td><td>DALLAS</td><td>Tulsa</td><td>Kansas City</td><td>Southern</td><td>West</td><td>http://www/1stbankandtrust.com</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td></td></tr>
</tbody></table>

当我使用此命令写入表时

\COPY all_reports_19921231_past_due_and_nonaccrual_loans_wholly_or_pa FROM 'C:\Data\04-09-2018-upload\FDIC\All_Reports_19921231\All_Reports_19921231_- Past Due and Nonaccrual Loans Wholly or Partially US Gvmt Guaranteed - Copy.csv' DELIMITER ',' CSV HEADER;

我收到这个错误

CONTEXT:  COPY all_reports_19921231_past_due_and_nonaccrual_loans_wholly_or_pa, line 4, column cbsa_metro: ""

在尝试复制到 Postgres 之前,我尝试在 Excel 中用单词“NULL”(和“null”)替换空单元格,但我仍然遇到同样的错误。

表的模式没有说 NOT NULL——所以这不是问题。(有问题的列,例如:“cbsa_metro numeric”)

用数字数据类型列可以处理的空值替换空单元格的最佳方法是什么?

标签: sqlpostgresqlpsqldata-warehouse

解决方案


推荐阅读