Funciona de maravilla, aquí...
DROP TABLE zipcodes CASCADE;
CREATE TABLE zipcodes
( id serial NOT NULL PRIMARY KEY
, zzip varchar NOT NULL UNIQUE
, ztype varchar
, primary_city varchar
, acceptable_cities varchar
, unacceptable_cities varchar
, state varchar
, county varchar
, ztimezone varchar
, area_codes varchar
, latitude varchar
, longitude varchar
, world_region varchar
, country varchar
, decommissioned varchar
, estimated_population varchar
, notes varchar
);
COPY zipcodes (zzip,ztype,primary_city
, acceptable_cities,unacceptable_cities
, state,county,ztimezone,area_codes
, latitude,longitude,world_region,country
, decommissioned,estimated_population,notes )
FROM '/tmp/zip_code_database.csv'
WITH CSV HEADER delimiter ','
;
Resultado:
DROP TABLE
CREATE TABLE
COPY 42522
(¿quizás el OP tiene problemas de CR/CRLF?)