[英]Import csv file data to plsql table using python
我有一个包含60000行的csv文件。 我需要将此数据插入到postgres数据库表中。 有什么方法可以减少从文件到数据库的数据插入而无需循环的时间? 请帮我Python版本:2.6
Database : postgres
table: keys_data
File Structure
1,ED2,'FDFDFDFDF','NULL'
2,ED2,'SDFSDFDF','NULL
Postgres可以使用COPY
命令将CSV直接读取到表中。 这要么要求您能够直接在Postgres服务器上放置文件,要么可以通过与COPY FROM STDIN
的连接来管道传输数据。
Postgres的psql
命令行客户端中的\\copy
命令将在本地读取文件并使用COPY FROM STDIN
插入,因此这可能是最简单(也是最快)的方法。
注意:这不需要使用Python,它是Postgres中的本机功能,并非所有或大多数其他RDB都具有相同的功能。
我执行了类似的任务,唯一的例外是我的解决方案基于python3.x。 我相信您可以找到该解决方案的等效代码。 代码很容易说明。
from sqlalchemy import create_engine
def insert_in_postgre(table_name, df):
#create engine object
engine = create_engine('postgresql+psycopg2://user:password@hostname/database_name')
#push dataframe in given database engine
df.head(0).to_sql(table_name, engine, if_exists='replace',index=False )
conn = engine.raw_connection()
cur = conn.cursor()
output = io.StringIO()
df.to_csv(output, sep='\t', header=False, index=False)
output.seek(0)
contents = output.getvalue()
cur.copy_from(output, table_name, null="")
conn.commit()
cur.close()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.