我正在创建一个将用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)