id, --sequence
uuid, --есть в файле
timezone, --результат подзапроса
language, --есть в файле
is_test, --нет в файле, должно быть false
created_at, --есть в файле
updated_at, --TIMESTAMP должно быть NOW()
deleted_at --должно принимать значение null или колонки last_ative из файла при условии, что колонка @invalid_identifier в файле равна "t"
) from '/temp/test.csv' with delimiter as ','
Не могу понять как дать "имена" колонкам в исходном .csv и можно ли в copy использовать case when, подзапросы и т.д. Можно ли вообще так сделать с Postgres?
В качестве примера - вот рабочая версия этого запроса для MySQL:
LOAD DATA LOCAL INFILE '/temp/test.csv' IGNORE INTO TABLE subscriptions COLUMNS TERMINATED BY ',' LINES TERMINATED BY '\n' IGNORE 1 LINES (
@id,
@language,
@unused_1
@unused_2
@unused_3
@created_at,
@last_active
@invalid_identifier,
) SET
id = null,
uuid = @id,
timezone = (SELECT NAME FROM timezones WHERE OFFSET=@timezone LIMIT 1),
language = @language,
is_test = false,
created_at = @created_at,
updated_at = NOW(),
deleted_at = CASE
WHEN @invalid_identifier = 't' THEN @last_active
ELSE null
END
Кто может помочь?
> MySQL А причём тут PostgreSQL?
Обсуждают сегодня