作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将数据从 csv 文件导入到 postgresql,不幸的是它的格式不完美。
例子:
DATE,TIME,NUMERIC,NUMERIC,NUMERIC,NUMERIC,INTEGER
我想将数据导入到包含以下列的表中:
timestamp with timezone, numeric, numeric, numeric, numeric, integer
为了导入数据,我使用复制:
COPY tabledata FROM 'c:\Users\Public\Downloads\test.csv' DELIMITERS ',' CSV;
当然这是行不通的,因为日期和时间是用“,”分隔的,所以 postgresql 假定它们是 2 个独立的数据字段。
我已经设法将 .csv 导入到一个像 .csv 一样设置的表中,但是我以后需要将日期和时间作为带有时区的时间戳,因为我将处理大量数据由于性能问题,导入后转换将是我最后的选择。
我尝试在使用“sed 's/,//' EURUSD30.csv > EURUSD30E.csv”导入之前编辑 .csv 文件,但我收到一条错误消息,提示输入了命令“'s/”错误或找不到。我很无能,因为这似乎对其他所有人都有效,但这也不是我的第一选择。
如果可以简单地告诉 postgresql 在导入时将时间和日期合并到一个时间戳值中,将会更容易。有什么想法吗?
谢谢
最佳答案
最好的办法是将数据COPY
到TEMPORARY
或UNLOGGED
表,然后从那里执行:
INSERT INTO real_table
SELECT col1, col2, col3, datecol + timecol, col6, ...
FROM temp_copy_table;
您也可以在此过程中进行任何其他所需的数据处理。
合并时考虑时区。 DATE
+ TIME
产生一个没有时区的时间戳
:
regress=# SELECT pg_typeof(DATE '2012-02-01' + TIME '10:00');
pg_typeof
-----------------------------
timestamp without time zone
(1 row)
并且您可能希望存储带时区的时间戳,因此您可能希望告诉 Pg 将日期+时间解释为处于特定时区:
(datecol + timecol) AT TIME ZONE 'UTC'
或者时间戳的本地时区是什么。
关于Postgresql - 将导入时 csv 的时间和日期合并到时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12690373/
我是一名优秀的程序员,十分优秀!