【发布时间】:2018-05-10 18:51:20
【问题描述】:
我必须将在线 csv 文件读入 postgres 数据库,在这种情况下,我在正确读取在线 csv 文件时遇到了一些问题。
如果我只是导入它读取为字节的文件,那么我必须对其进行解码。然而,在解码过程中,似乎整个文件都变成了一个长字符串。
# Libraries
import csv
import urllib.request
# Function for importing csv from url
def csv_import(url):
url_open = urllib.request.urlopen(url)
csvfile = csv.reader(url_open.decode('utf-8'), delimiter=',')
return csvfile;
# Reading file
p_pladser = csv_import("http://wfs-kbhkort.kk.dk/k101/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=k101:p_pladser&outputFormat=csv&SRSNAME=EPSG:4326")
当我尝试逐行读取导入的文件时,它一次只读取一个字符。
for row in p_pladser:
print(row)
break
['F']
您能帮我找出问题所在吗?我正在使用 Python 3.6。
编辑:根据请求我在 R 中的解决方案
# Loading library
library(RPostgreSQL)
# Reading dataframe
p_pladser = read.csv("http://wfs-kbhkort.kk.dk/k101/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=k101:p_pladser&outputFormat=csv&SRSNAME=EPSG:4326", encoding = "UTF-8", stringsAsFactors = FALSE)
# Creating database connection
drv <- dbDriver("PostgreSQL")
con <- dbConnect(drv, dbname = "secretdatabase", host = "secrethost", user = "secretuser", password = "secretpassword")
# Uploading dataframe to postgres database
dbWriteTable(con, "p_pladser", p_pladser , append = TRUE, row.names = FALSE, encoding = "UTF-8")
我必须为 10,000 到 100,000 行上传几个表,在 R 中总共需要 1-2 秒才能将它们全部上传。
【问题讨论】:
标签: python python-3.x csv urllib2