Pab*_*rdo 6 python sql csv postgresql psycopg2
我正在尝试用python脚本中的CSV文件填充表格.
随后的SQL语句运行时没有错误:
COPY registro
FROM '/home/pablo/Escritorio/puntos/20140227.csv'
DELIMITER ','
CSV header;
Run Code Online (Sandbox Code Playgroud)
CSV具有标题,并使用header
参数,导入时没有错误.
当我从我的python脚本执行它时,问题出现了.我发现不尝试导入标题的唯一方法是使用copy_expert()
方法.我没有收到任何错误消息,但是在我运行下面的Python脚本后,表仍然是空的.
任何可能的线索?或者也许用其他任何方式从带有标题的CSV复制表格?
谢谢.
#/usr/bin/env python
# -*- coding: utf-8 -*-
import psycopg2
import os
import glob
DSN = "dbname=gps user=postgres host=localhost"
con = psycopg2.connect(DSN)
cur = con.cursor()
my_file = open('/home/pablo/Escritorio/puntos/20140227.csv')
#This is only a test file, not all the directory
sql = "COPY registro FROM stdin DELIMITER \',\' CSV header;"
cur.copy_expert(sql, my_file)
cur.close()
con.close()
Run Code Online (Sandbox Code Playgroud)
我会尝试con.commit()
后cur.copy_expert()
.
另外,如果数据集很大,我会避免像Sam P.上面指出的那样逐行预处理和上传文件.cur.copy_expert()
明显更快.
conn = psycopg2.connect('postgresql://scott:tiger@localhost:5432/database')
cur = conn.cursor()
copy_sql = """
COPY table_name FROM stdin WITH CSV HEADER
DELIMITER as ','
"""
with open(path, 'r') as f:
cur.copy_expert(sql=copy_sql, file=f)
conn.commit()
cur.close()
Run Code Online (Sandbox Code Playgroud)
我建议首先在 python 中处理 csv 文件。最好将从 csv 文件中提取的数据构造成行/列(在 python 中,这将是嵌套列表或元组列表),然后您可以基于该数据迭代地构建和执行 SQL 命令。
使用该csv
库与 csv 文件进行交互,请查看此处的文档: https: //docs.python.org/2/library/csv.html。它非常用户友好,可以帮助您解决很多问题。
这是一种不需要的方法csv
(因为我记不起所有的功能),但是最好不要使用这种方法:
#/usr/bin/env python
# -*- coding: utf-8 -*-
import psycopg2
import os
import glob
DSN = "dbname=gps user=postgres host=localhost"
con = psycopg2.connect(DSN)
cur = con.cursor()
# 'rb' used as I don't know the encoding of your file
# just use r if it's in utf-8 or a known/consistent charset
with open(file,'rb') as open_file:
my_file = open_file.read().decode('utf-8','ignore')
data = my_file.splitlines()
data = [r.split(delimiter) for r in data]
data = data[1:] # get rid of headers
for r in data:
# create command
# cur.execute(command)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11513 次 |
最近记录: |