问题陈述:
我有多个csv文件。我正在使用python清洗它们,并使用bcp将它们插入到SQL server。现在,我想把它插入到Greenplum中,而不是Server中。请建议一种直接从python数据框架到greenplum表的批量插入格林梅利表的方法。
解决方案:(我能想到的)
我可以认为是CSV-> Dataframe -> Cleainig -> Dataframe -> CSV ->,然后使用Gpload进行批量装载。并将其集成到Shell脚本中以实现自动化。有没有人有很好的解决办法。
在直接将数据从数据加载到gp表:时发出问题
当gpload请求文件路径时。我能给你递一份不同的或数据吗?有什么方法可以将数据装载到格林梅中吗?我不想从dataframe创建一个csv或txt文件,然后将其加载到格林梅利。
发布于 2017-11-29 01:28:43
我会使用psycopg2和io库来完成这个任务。io是内置的,您可以使用pip (或conda)安装psycopg2。
基本上,您可以以csv格式将数据写入字符串缓冲区(“内存文件”)。然后使用copy_from 2的函数将其批量加载/复制到您的表中。
这应该会让你开始:
import io
import pandas
import psycopg2
# Write your dataframe to memory as csv
csv_io = io.StringIO()
dataframe.to_csv(csv_io, sep='\t', header=False, index=False)
csv_io.seek(0)
# Connect to the GreenPlum database.
greenplum = psycopg2.connect(host='host', database='database', user='user', password='password')
gp_cursor = greenplum.cursor()
# Copy the data from the buffer to the table.
gp_cursor.copy_from(csv_io, 'db.table')
greenplum.commit()
# Close the GreenPlum cursor and connection.
gp_cursor.close()
greenplum.close()https://stackoverflow.com/questions/47429651
复制相似问题