title: Postgres - force NULL values in numeric columns with \COPY
body: <p>I am writing large CSVs to Postgres tables.  The columns are a mix of datatypes.  Some are numeric and some of these numeric columns contain empty cells.</p>
  
  <p>Here is an example row.  (You'll have to click "Run code snippet" to see a decent view of the example row.)</p>
  
  <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-html lang-html prettyprint-override"><code>&lt;style type="text/css"&gt;
   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;
   }
  &lt;/style&gt;
  &lt;table class="tableizer-table"&gt;
  &lt;thead&gt;&lt;tr class="tableizer-firstrow"&gt;&lt;th&gt;cert&lt;/th&gt;&lt;th&gt;docket&lt;/th&gt;&lt;th&gt;fed_rssd&lt;/th&gt;&lt;th&gt;rssdhcr&lt;/th&gt;&lt;th&gt;name&lt;/th&gt;&lt;th&gt;city&lt;/th&gt;&lt;th&gt;stalp&lt;/th&gt;&lt;th&gt;zip&lt;/th&gt;&lt;th&gt;repdte&lt;/th&gt;&lt;th&gt;rundate&lt;/th&gt;&lt;th&gt;bkclass&lt;/th&gt;&lt;th&gt;address&lt;/th&gt;&lt;th&gt;namehcr&lt;/th&gt;&lt;th&gt;offdom&lt;/th&gt;&lt;th&gt;offfor&lt;/th&gt;&lt;th&gt;stmult&lt;/th&gt;&lt;th&gt;specgrp&lt;/th&gt;&lt;th&gt;subchaps&lt;/th&gt;&lt;th&gt;county&lt;/th&gt;&lt;th&gt;cbsa_metro&lt;/th&gt;&lt;th&gt;cbsa_metro_name&lt;/th&gt;&lt;th&gt;estymd&lt;/th&gt;&lt;th&gt;insdate&lt;/th&gt;&lt;th&gt;effdate&lt;/th&gt;&lt;th&gt;mutual&lt;/th&gt;&lt;th&gt;parcert&lt;/th&gt;&lt;th&gt;trust&lt;/th&gt;&lt;th&gt;regagnt&lt;/th&gt;&lt;th&gt;insagnt1&lt;/th&gt;&lt;th&gt;fdicdbs&lt;/th&gt;&lt;th&gt;fdicsupv&lt;/th&gt;&lt;th&gt;fldoff&lt;/th&gt;&lt;th&gt;fed&lt;/th&gt;&lt;th&gt;occdist&lt;/th&gt;&lt;th&gt;otsregnm&lt;/th&gt;&lt;th&gt;inst.webaddr&lt;/th&gt;&lt;th&gt;P3GTYPAR&lt;/th&gt;&lt;th&gt;P3GTY&lt;/th&gt;&lt;th&gt;P3GTYGNM&lt;/th&gt;&lt;th&gt;P9GTYPAR&lt;/th&gt;&lt;th&gt;P9GTY&lt;/th&gt;&lt;th&gt;P9GTYGNM&lt;/th&gt;&lt;th&gt;NAGTYPAR&lt;/th&gt;&lt;th&gt;NAGTY&lt;/th&gt;&lt;th&gt;NAGTYGNM&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
   &lt;tr&gt;&lt;td&gt;16419&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;419255&lt;/td&gt;&lt;td&gt;1055780&lt;/td&gt;&lt;td&gt;1st Bank &amp; Trust&lt;/td&gt;&lt;td&gt;Broken Bow&lt;/td&gt;&lt;td&gt;OK&lt;/td&gt;&lt;td&gt;74728&lt;/td&gt;&lt;td&gt;12/31/1992&lt;/td&gt;&lt;td&gt;8/4/2016&lt;/td&gt;&lt;td&gt;NM&lt;/td&gt;&lt;td&gt;210 North Broadway&lt;/td&gt;&lt;td&gt;SOUTHEASTERN BANCSHARES, INC.&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;Mccurtain&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;5/6/1946&lt;/td&gt;&lt;td&gt;5/6/1946&lt;/td&gt;&lt;td&gt;10/13/1997&lt;/td&gt;&lt;td&gt;Stock&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;FDIC&lt;/td&gt;&lt;td&gt;BIF&lt;/td&gt;&lt;td&gt;Dallas&lt;/td&gt;&lt;td&gt;DALLAS&lt;/td&gt;&lt;td&gt;Tulsa&lt;/td&gt;&lt;td&gt;Kansas City&lt;/td&gt;&lt;td&gt;Southern&lt;/td&gt;&lt;td&gt;West&lt;/td&gt;&lt;td&gt;http://www/1stbankandtrust.com&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;&lt;/table&gt;</code></pre>
  </div>
  </div>
  </p>
  
  <p>When I use this command to write to the table</p>
  
  <pre><code>\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;
  </code></pre>
  
  <p>I get this error</p>
  
  <pre><code>CONTEXT:  COPY all_reports_19921231_past_due_and_nonaccrual_loans_wholly_or_pa, line 4, column cbsa_metro: ""
  </code></pre>
  
  <p>I have tried replacing the empty cells with the word "NULL" (and "null") in Excel before trying to copy to Postgres, but I still hit the same error.</p>
  
  <p>The table's schema does not say NOT NULL -- so that isn't the issue.  (The column in question, for example says: "cbsa_metro numeric,")</p>
  
  <p>What is the best way to replace empty cells with a null value that a numeric datatype column can handle? </p>