繁体   English   中英

使用python将csv文件数据导入plsql表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM