csv PostgreSQL NULL

4xy9mtcn  于 12个月前  发布在  PostgreSQL
关注(0)|答案(1)|浏览(72)

我正在尝试解析csv并将其插入到本地数据库中。一切都很好,直到我得到一个错误:
错误:整型的语法不正确:“无”第1行:...workclass,education_num,marriage_status)VALUES('None ',NU...
我确信csv是好的,调试所有 Dataframe 的代码和光标循环,但在此之后,他向我发送了这个错误。Age和education_num是int,workclass和marriage_status是varchar。我该怎么办?

import psycopg2
import pandas as pd
url = 'https://raw.githubusercontent.com/akmand/datasets/main/adult.csv'
dataFrame = pd.read_csv(url)
print(dataFrame)
try:
    with psycopg2.connect(
        host="localhost",
        user="dodle4532",
        password="1111",
        database="firstDataBase"
    ) as connection:
        ex = """INSERT INTO "table" (age, workclass, education_num, marital_status) VALUES (%s, %s, %s, %s)"""
        for i in range(0, dataFrame.size):
            cursor.execute(ex, (str(dataFrame['age'].get(i + 1)), dataFrame['workclass'].get(i + 1), 
            str(dataFrame['education_num'].get(i + 1)), dataFrame['marital_status'].get(i + 1)))
gpnt7bae

gpnt7bae1#

这可能与字符串插值有关(这需要在某种程度上完成,但我会避免直接传递值)。您可以通过检查None并将其改为"null"(字符串)来修补此问题以获得基本版本

entry = member.get(...)
if value is None:
    value = "null"

但是,Pandas .to_sql(...)可以直接执行您想要的操作,同时https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_sql.html的速度也要快得多

with psycopg2.connect(...) as connection:
    dataFrame.to_sql("firstDataBase", connection)

相关问题