sql >> Databasteknik >  >> RDS >> PostgreSQL

Ändra tidszonvärde för data

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;



  1. Importera XML i PHP för att lägga till i Mysql DB

  2. mysql-databastillverkning rullgardinsmeny med data som redan skrivits in i html/php

  3. Snabbaste sättet att infoga massdata i Mysql-databas

  4. Hur du komprimerar din databas så att den går snabbare