我编写了一个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..."