解決方案:
需要添加該行
(FORMAT csv, DELIMITER ',', HEADER true);而不是DELIMITER...像我的原始代碼中那樣。有關更多資訊,請參見下文
原帖:我是新手,所以非常感謝任何幫助。我需要使用/學習一個資料庫并選擇了 PostgreSQL——對想法持開放態度,并且在匯入 CSV 時遇到了困難。
我在 python 3.10 中使用 psycopg (v3),在 Pycharm 中作業。我做了一個表,并試圖匯入一個 .csv;我收到此錯誤:
日期型別的輸入語法無效:“01/31/22”
背景關系:復制 test_table,第 1 行,列 quote_date:“01/31/22”
首先,我認為 DateStyle 不正確,所以我添加了:
cur.execute('SET DateStyle = "ISO, MDY";')
這是我的完整代碼:
import psycopg
from config import config
# Connect to an existing database
try:
params = config()
with psycopg.connect(**params) as conn:
# Open a cursor to perform database operations
with conn.cursor() as cur:
cur.execute('SELECT version()')
db_version = cur.fetchone()
print(f'PostgreSQL database version: {db_version}')
print('Connected to database.')
cur.execute('SET DateStyle = "ISO, MDY";')
cur.execute("""
COPY test_table
FROM '/Users/.../copy.csv'
DELIMITER ',';""")
except(Exception, psycopg.DatabaseError) as error:
print(error)
我仍然遇到同樣的錯誤。我在文本編輯器中檢查了 .csv,它看起來不錯。
(目錄中的“...”在這篇文章中被截斷)
uj5u.com熱心網友回復:
就我而言,它有效:
import psycopg2
try:
with psycopg2.connect(
dbname="postgres",
user="postgres",
password="password",
host="localhost",
port=54321,
) as conn:
# Open a cursor to perform database operations
with conn.cursor() as cur:
cur.execute('SELECT version()')
db_version = cur.fetchone()
print(f'PostgreSQL database version: {db_version}')
print('Connected to database.')
cur.execute('SET DateStyle = "ISO, MDY";')
cur.execute("""
COPY test_table
FROM '/tmp/dt.csv'
(FORMAT csv, DELIMITER ',', HEADER true);""")
except(Exception, psycopg2.DatabaseError) as error:
print(error)
但我psycopg2改用了psycopg。我的dt.csv檔案也有標題:
dt
01/31/22
02/22/23
所以我補充說HEADER true。表的 DDL
CREATE TABLE test_table(
dt DATE
)
PostgreSQL 11.4,psycopg2==2.8.6
pgAdmin 中的結果表:

uj5u.com熱心網友回復:
我想你想要SQL,而不是ISO:
db=> SET datestyle='SQL, MDY';
SET
db=> SELECT to_char('2/17/22'::DATE, 'day dd month YYYY') ;
to_char
-----------------------------
thursday 17 february 2022
(1 row)
還有“22”?我們沒有從千年蟲危機中學到什么嗎?
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/426894.html
標籤:Python postgresql psycopg2 psycopg3
