有一個 csv 檔案,在一列中的日期時間列值以納秒為單位(即 21/11/2021 01:00:05.120972944)。我需要將 csv 檔案資料插入到 postgreSQL 資料庫中。當我使用 datetime 列資料型別時timestamp(6),拋出錯誤 datetime 列的無效語法。potgreSQL 資料庫中日期時間列的正確資料型別是什么。
uj5u.com熱心網友回復:
時間戳的最大精度為 6。您提供的資料精度為 9。
laetitia=# select now()::timestamp(9);
WARNING: TIMESTAMP(9) precision reduced to maximum allowed, 6
LINE 1: select now()::timestamp(9);
^
now
----------------------------
2022-10-05 11:41:02.107602
(1 row)
所以我的建議是將此列作為文本添加到臨時表中,然后將其轉換為時間戳以將其插入常規表中。(實際上,從 CSV 檔案加載資料時,我總是建議將所有內容加載到臨時表中,然后使用 SQL 進行轉換)。
例如:
laetitia=# select col::timestamp(9)
from (values ('01/11/2021 01:00:05.120972944')) as test(col);
WARNING: TIMESTAMP(9) precision reduced to maximum allowed, 6
LINE 1: select col::timestamp(9)
^
col
----------------------------
2021-01-11 01:00:05.120973
(1 row)
我猜在這種情況下該警告是可以接受的,或者您也可以制作另一個查詢來避免該警告。
哦,我差點忘了,請確保您的日期時間默認格式是正確的,因為如果 Postgres 想要 MM/DD/YYYY,那么 21/11/2022 超出范圍!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/512100.html
上一篇:帶有月份的Pandas過濾器
