是否可以将原始数据输入PostgreSQL以复制除某些列之外的行?

问题描述 投票:0回答:1

我有一个包含个人信息(包括地址)的原始文件csv:每个地址有两列,以及两个不同的地址(总共四个字段)。

因此,我的CSV中可能包含Fred, Flinstone, ID#12345678, 123 Street, Apt 6, Seattle, WA, 87319, 567 5th Ave, Seattle, WA, 87321以及我需要的其他几列。

我的问题是,有没有一种方法可以导入或设置将获取此数据并将其分为两行的CREATE TABLE语句:

0: Fred, Flinstone ID#12345678, 123 Street, APT 6, Seattle, WA, 87319

1: Fred, Flinstone ID#12345678, 567 5th Ave, Seattle, WA, 87312

我知道有Array_arg用于将数组拆分为不同的行,但是我不知道如何从中填充新表。基本上,我现在的问题是,我们只用列出的主要/第一个地址来设置此数据库,而现在在尝试加入该表时会引起严重的问题。我不想设置了两个表,可以在其中加入以获得两个地址。我只想知道是否可以对导入执行此操作,因为我的搜索没有找到我想要的东西。

postgresql database-design database-schema
1个回答
0
投票

有两种方法可以解决此问题:

  • 使用外部数据包装器
  • 使用副本和登台表。

您可以定义一个外部表,它可以像使用外部数据包装器的sql表一样访问csv表。然后,您可以使用insert as select将记录插入目标表中。您需要选择两次运行插入操作:首先输入主地址,然后输入次地址。

代替使用外部数据包装器方法,您首先可以使用copy命令将表加载到暂存表中。然后,使用登台表将insert作为select运行到目标表中。

© www.soinside.com 2019 - 2024. All rights reserved.