有没有一种方法可以将实木复合地板文件中的数据直接插入PostgreSQL数据库中?

时间:2019-11-10 08:05:37

标签: bash postgresql hdfs parquet

我正在尝试还原一些以镶木地板格式保存的历史备份文件,我想从它们中读取一次并将数据写入PostgreSQL数据库。

我知道备份文件是使用spark保存的,但是对我来说有一个严格的限制,即我不能在数据库计算机中安装spark,也不能在远程计算机中使用spark读取镶木地板文件,然后使用{{1 }}。仅使用Postgres和Bash脚本,一切都需要在DB计算机上进行,并且在没有spark和Hadoop的情况下进行。

我的文件结构类似于:

spark_df.write.jdbc

我希望仅从bash和Postgres CLI读取每个镶木文件夹(如foo/ foo/part-00000-2a4e207f-4c09-48a6-96c7-de0071f966ab.c000.snappy.parquet foo/part-00001-2a4e207f-4c09-48a6-96c7-de0071f966ab.c000.snappy.parquet foo/part-00002-2a4e207f-4c09-48a6-96c7-de0071f966ab.c000.snappy.parquet .. .. )中的数据和架构,使用该架构创建表并将数据写入创建的表中。

1 个答案:

答案 0 :(得分:2)

您可以使用spark并将镶木地板文件转换为csv格式,然后将文件移动到DB计算机并通过任何工具导入。

spark.read.parquet("...").write.csv("...")
import pandas as pd
df = pd.read_csv('mypath.csv')
df.columns = [c.lower() for c in df.columns] #postgres doesn't like capitals or spaces

from sqlalchemy import create_engine
engine = create_engine('postgresql://username:password@localhost:5432/dbname')

df.to_sql("my_table_name", engine)