如何处理Psycopg2上传中的丢失数据

时间:2018-11-19 20:25:29

标签: python postgresql psycopg2

我编写了一个Python脚本,该脚本成功连接到我的Postgres数据库,并且还成功地使用rglob来获取目录中的所有.tsv文件。

这些.tsv文件中的某些单元格缺少值。通常,当我上传到Postgres时,Postgres将它们分配为NULL /空没有问题。但是通过psycopg2执行此操作时出现错误。

我的代码和错误如下:

create_table_1004 = """
create table if not exists mls_appraiser_form_1004mc_detailed (
    Status text,
    Street_Address_Full text,
    List_Price text,
    Sale_Price text,
    Age text,
    Sq_Ft_Total text,
    Lot_Size1 text,
    Listing_Date text,
    Sale_Date text,
    Close_Date text,
    DOM text,
    Unit_Number text,
    Zip_Code text,
    Original_List_Price text,
    Year_Built text,
    Lot_Size2 text,
    MLS_Number text
);
"""



def main():

    for file in pathlib.Path().rglob('*.tsv'):
        cur.execute(create_table_1004)
        with open(file,'r') as file_in:
            cur.copy_from(file_in, 'mls_appraiser_form_1004mc_detailed', sep='\t', null='\\N')

    conn.commit()

    conn.close()

if __name__ == '__main__':
    main()

错误:

Traceback (most recent call last):
  File "tsv.uploader2.py", line 72, in <module>
    main()
  File "tsv.uploader2.py", line 65, in main
    cur.copy_from(file_in, 'mls_appraiser_form_1004mc_detailed', sep='\t')
psycopg2.DataError: missing data for column "original_list_price"
CONTEXT:  COPY mls_appraiser_form_1004mc_detailed, line 1: "    S   MLS #   Street Address  Price   DOM Beds Total  Bths    Sq Ft Total Lot Size    Postal City Property Sub Type..."

0 个答案:

没有答案