sql >> Database teknologi >  >> RDS >> PostgreSQL

enkelte anførselstegn vises omkring værdien efter at have kørt kopi i postgres 9.2

Det, du beskriver i dit spørgsmål, er åbenbart ikke, hvad der virkelig sker. COPY ville mislykkes ved at prøve at importere strengliteraler med redundante enkelte anførselstegn til en date kolonne.

For at slippe af med overflødige citater skal du importere til en midlertidig tabel med text kolonne, derefter INSERT INTO måltabellen trimmer anførselstegnene:

CREATE TEMP TABLE wtmp (
   city text
 , temp_lo int
 , temp_hi int
 , prcp real
 , date text  -- note how I use text here.
);

COPY wtmp FROM '~aviad/postsgres/playground/weather.txt';

INSERT INTO weather (city, temp_lo, temp_hi, prcp, date)
SELECT city, temp_lo, temp_hi, prcp, trim(date, '''')::date
FROM   wtmp
-- ORDER BY ?
;

Vikartabellen slettes automatisk i slutningen af ​​din session.

Reserverede ord som identifikatorer

Jeg kan se, at du kopierede eksemplet fra manualen. Her er dybe link til den aktuelle manual .

Selvom det er korrekt, er dette eksempel i manualen uheldigt. Jeg vil råde dig til ikke at bruge reserverede ord som date som kolonnenavne. Som du kan se her date er et reserveret ord i enhver SQL-standard. Det er tilladt at bruge i Postgres, og jeg kan se, hvordan det er fristende for et simpelt eksempel. Men det gør det ikke til en god idé. Generelt bør du have for vane at undgå reserverede ord som identifikatorer. Det fører til forvirrende fejlmeddelelser og unødvendigt inkompatibel SQL-kode.



  1. Oracle vælg seneste datopost

  2. hvordan man får tilbage java UUID gemt i DB som binær

  3. Valg og konfiguration af hardware til SQL Server 2016 Standard Edition

  4. Opret PHP-array fra MySQL-kolonnen