有没有办法直接将镶木地板文件中的数据插入 PostgreSQL 数据库?
Is there a way to directly insert data from a parquet file into PostgreSQL database?
我正在尝试恢复一些以 parquet 格式保存的历史备份文件,我想从中读取一次并将数据写入 PostgreSQL 数据库。
我知道备份文件是用spark保存的,但是我有一个严格的限制,我不能在数据库机器上安装spark或者在远程设备上使用spark读取parquet文件并使用spark_df.write.jdbc
。一切都需要在数据库机器上进行,并且在没有 spark 和 Hadoop 的情况下只能使用 Postgres 和 Bash 脚本。
我的文件结构是这样的:
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
..
..
我希望从每个 parquet 文件夹中读取数据和模式,例如 foo
,使用该模式创建 table 并将数据写入形状 table,仅使用 bash 和 Postgres CLI。
您可以使用 spark 并将 parquet 文件转换为 csv 格式,然后将文件移动到数据库机器并通过任何工具导入它们。
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)
我正在尝试恢复一些以 parquet 格式保存的历史备份文件,我想从中读取一次并将数据写入 PostgreSQL 数据库。
我知道备份文件是用spark保存的,但是我有一个严格的限制,我不能在数据库机器上安装spark或者在远程设备上使用spark读取parquet文件并使用spark_df.write.jdbc
。一切都需要在数据库机器上进行,并且在没有 spark 和 Hadoop 的情况下只能使用 Postgres 和 Bash 脚本。
我的文件结构是这样的:
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
..
..
我希望从每个 parquet 文件夹中读取数据和模式,例如 foo
,使用该模式创建 table 并将数据写入形状 table,仅使用 bash 和 Postgres CLI。
您可以使用 spark 并将 parquet 文件转换为 csv 格式,然后将文件移动到数据库机器并通过任何工具导入它们。
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)