Det är mycket effektivare att ställa in tidszonen för din importsession än att uppdatera värdena senare.
Jag får intrycket att du tänker på tidszonen som en inställning som gäller för annars oförändrade värden i tabellerna. Men det är inte alls så. Se det som en ingångs-/utgångsmodifierare. Faktisk timestamp värden (med eller utan tidszon) är alltid lagras som UTC-tidsstämplar internt (antal sekunder sedan '2000-01-01 00:00' ). Mycket mer information:
UPDATE i ditt andra exempel fördubblas tabellens storlek, eftersom varje enskild rad blir ogiltig och en ny version läggs till (det är så UPDATE fungerar med MVCC
i Postgres). Förutom den dyra operationen, VACUUM kommer att behöva göra mer arbete senare för att städa upp bordssvällningen. Mycket ineffektivt.
Det är helt säkert till SET den lokala tidszonen för sessionen. Detta påverkar inte samtidiga operationer på något sätt. BTW, SET SESSION är samma som vanlig SET eftersom SESSION är standard ändå.
Om du vill vara absolut visst, du kan begränsa inställningen till den aktuella transaktionen med SET LOCAL . Jag citerar manualen här
Sätt ihop:
BEGIN;
SET LOCAL timezone = 'UTC';
COPY tabledata FROM 'c:\Users\Public\Downloads\test.csv' DELIMITERS ',' CSV;
COMMIT;
Kontrollera:
SHOW timezone;