我想將csv文件導入psql數據庫。在閱讀了關於COPY
和\copy
之間的差異之後,我在執行腳本時遇到了此錯誤。如何在Python中使用psql「 copy」?
這裏是我的代碼切割:
try:
csv_data = os.path.realpath('test.csv')
con = psycopg2.connect(database = 'db01', user = 'postgres')
cur = con.cursor()
cur.execute("\copy stamm_data from '%s' DELIMITER ';' csv header" % csv_data)
con.commit()
而這裏的錯誤:
Error: syntax error at or near "\"
LINE 1: \copy stamm_data from '/home/jw/dev/test.csv' delimiter ';' ...
^
當使用COPY
我得到:
Error: could not open file "/home/jw/dev/test.csv" for reading: Permission denied
雖然PSQL用戶Postgres的是超級用戶和運行該腳本的ubuntu用戶對test.csv文件具有讀取權限。
任何想法?
'\ copy'用於psql命令行工具。 python有[copy_from](http://initd.org/psycopg/docs/cursor.html#cursor.copy_from)和copy_to。 – 2015-03-02 12:45:10
謝謝!我不知道psycopg2提供了這樣的功能。還有一個問題:當我使用'copy_from'時,我不能像psql命令中那樣忽略csv-header,我是對的?對我來說最好的解決方案是從csv-data中刪除第一行(頭文件),然後用'copy_from'導入文件? – jwi 2015-03-02 15:27:35
是的,要麼或看到'copy_expert'而不是'copy_from' – 2015-03-02 15:45:18