2017-08-10 48 views
0
I want to insert data from a CSV file into a PostgreSQL table. The table 

結構如下。但是我無法給出INTEGER類型值的輸入。 它表示錯誤喜歡 - DataError:無效輸入語法整數: 「vendor_phone」 LINE 1:... vendor_phone,vendor_address)VALUES( 'VENDOR_NAME','vendor_ph ...從CSV文件插入到整數值類型的PostgreSQL表

它是工作正常,如果我用VARCHAR類型,但我需要使用整數值。

CREATE TABLE vendors (
     vendor_id SERIAL PRIMARY KEY, 
     vendor_name VARCHAR(100) NOT NULL, 
     vendor_phone INTEGER, 
     vendor_address VARCHAR(255) NOT NULL 
    ) 

import psycopg2 
    import csv 

    database = psycopg2.connect (database = "supplier", user="postgres", password="1234", host="localhost", port="5432") 

光標= database.cursor()

vendor_data = csv.reader(open('vendors.csv'),delimiter=',') 

    for row in vendor_data: 

     cursor.execute("INSERT INTO vendors (vendor_name,vendor_phone,vendor_address)"\ 
      "VALUES (%s,%s,%s)", 
      row) 

    print("CSV data imported") 

    cursor.close() 
    database.commit() 
    database.close() 
+0

看仔細錯誤信息,它說你要插入單詞「 vendor_phone「,這顯然不是一個整數。這聽起來像你有一個標題行,你需要跳過。 – IMSoP

+0

請參閱此鏈接..可能對您有所幫助... (1)https://stackoverflow.com/questions/2987433/how-to-import-csv-file-data-into-a-postgresql-table (2)https://stackoverflow.com/questions/19400173/how-should-i-import-data-from-csv-into-a-postgres-table-using-pgadmin-3 –

+0

我需要輸入整數值....此外,我有一些我的代碼 - header = next(vendor_data) rows = [header] + [[row [0],int(row [1]),row [2] (供應商名稱,vendor_phone,vendor_address)「 」VALUES(%s,%??,%s)「, row) – Neepa

回答

0

代替光標,你可以使用下面的語句直接從CSV數據加載到表,跳過CSV的頭文件

COPY vendors (vendor_name,vendor_phone,vendor_address) FROM 'vendors.csv' CSV HEADER; 
+0

我需要我插入一個整數值....此外,我編輯了我的代碼的一部分 - header = next(vendor_data) rows = [header] + [[row [0],int(row [1]),row [2 ]在vendor_data行] 爲行中的行: cursor.execute( 「INSERT INTO供應商(VENDOR_NAME,vendor_phone,vendor_address)」 \ 「VALUES(%S,%d,%S)」, 行) ----它給出錯誤-ValueError:不支持的格式字符'd'(0x64)在索引%Id – Neepa

+0

%d。你嘗試過COPY命令嗎? –

+0

從您的建議我已嘗試複製命令 cursor.execute(「COPY vendor_parts (vendor_id,part_book_id,time_id,total_sale) FROM'D:\ vendor_parts.csv'CSV HEADER;」)----- This查詢正在shell提示符下運行,但未在我的python代碼中運行。顯示錯誤SyntaxError:掃描字符串時的EOL ---- – Neepa