1. 准备工作和环境设置

下载和安装DBeaver:
确认PostgreSQL已经安装并运行:
  • 确保你的PostgreSQL数据库服务器已经安装并正在运行。
  • 使用psql或pgAdmin工具可以连接到PostgreSQL数据库。

2. 创建PostgreSQL目标表

  1. 打开DBeaver并连接到你的PostgreSQL数据库。
  2. 使用SQL编辑器创建一个目标表。假设CSV文件包含的字段有idnameemail等字段:
CREATE TABLE target_table (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100),
    email VARCHAR(100)
);


3. 加载CSV文件到临时表或临时存储中

  1. 打开DBeaver。
  2. 导入CSV文件到PostgreSQL:
    • 在DBeaver中找到你的数据库连接,右键点击数据库名,选择 “导入数据”。
    • 选择要导入的CSV文件,点击 “下一步”。
    • 在目标表上选择 “新建表”,然后点击 “下一步”。
    • 配置新表的列类型,点击 “下一步”。
    • 检查设置后,点击 “完成”。

假设我们将CSV文件导入一个名为temp_table的表中,表结构与CSV文件一致。


4. 数据清洗和转换

假设需要清洗的部分包括去除空白的name字段和验证email格式。

-- 使用CTE清洗数据并插入到目标表
INSERT INTO target_table (name, email)
SELECT name, email
FROM temp_table
WHERE name IS NOT NULL
AND email ~* '^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$';


5. 验证导入的数据

  1. 查询目标表中的数据,确保数据已经正确导入。
SELECT * FROM target_table;


6. 清理工作

  1. 删除临时表。
DROP TABLE temp_table;


7. 使用Python进行ETL(可选)

如果需要更复杂的数据清洗,可以使用Python和Pandas库来处理CSV文件,然后将数据加载到PostgreSQL。

使用Python读取和清洗CSV文件:
import pandas as pd
from sqlalchemy import create_engine

# 读取CSV文件
df = pd.read_csv('path_to_csv_file')

# 数据清洗示例
df = df.dropna(subset=['name'])  # 移除name为空的列
df = df[df['email'].str.match(r'^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$', case=False, na=False)]  # 验证email格式

# 连接到PostgreSQL
engine = create_engine('postgresql://username:password@localhost:5432/database_name')

# 将数据写入PostgreSQL
df.to_sql('target_table', engine, if_exists='append', index=False)


8. 总结

上述步骤详述了如何从CSV文件提取数据,进行数据清洗,并将其加载到PostgreSQL数据库中。根据具体需求,选择适合的工具和方法(如直接使用DBeaver或结合Python处理数据)可以帮助你高效完成任务。

GitHub 加速计划 / db / dbeaver
24
1
下载
DBeaver 是一个通用的数据库管理工具,支持跨平台使用。* 支持多种数据库类型,如 MySQL、PostgreSQL、MongoDB 等;提供 SQL 编辑、查询、调试等功能;支持数据迁移和比较。* 特点:免费开源;界面友好;功能丰富。
最近提交(Master分支:5 个月前 )
6a8c1d07 * #35624 Fix visualization of infinity for date in postgres * #35624 Add isReadDateAsObject only for infinity case returns true * #35624 Return to previous variant 6 天前
7a70d327 6 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐