我正在创建一个将用COPY. 这是该数据的格式:
6/30/2014 2:33:00 PM
MM-DD-YYYY HH:MM:SS ??
我将使用什么作为CREATE TABLE语句的格式?
CREATE TABLE practice (
Data_Time ????
)
一种替代方法可能是varchar()稍后读取为 then 格式。似乎令人费解。
我正在创建一个将用COPY. 这是该数据的格式:
6/30/2014 2:33:00 PM
MM-DD-YYYY HH:MM:SS ??
我将使用什么作为CREATE TABLE语句的格式?
CREATE TABLE practice (
Data_Time ????
)
一种替代方法可能是varchar()稍后读取为 then 格式。似乎令人费解。
始终将时间戳存储为timestamp(或timestamptz)。
永远不要为此使用字符串类型 ( text, varchar, ...)。
CREATE TABLE practice (
practice_id serial PRIMARY KEY
, data_time timestamp NOT NULL
);
如果您的时间戳文字是干净的并且遵循标准MDY格式,您可以将DateStyle事务临时设置为timestamp直接读取正确的类型:
BEGIN;
SET LOCAL datestyle = 'SQL, MDY'; -- works for your example
COPY practice (data_time) FROM '/path/to/file.csv';
COMMIT;
否则,您的想法还不错:COPY对于带有text列的临时表,INSERT可能使用to_timestamp(). 例子:
你几乎不应该在 postgres 中使用 vharchar() 。始终使用文本。但在我看来你想要 2 列
create table practice (date_time timestamp, format text)