将列数据对从csv导入sql

将列数据对从csv导入sql,sql,postgresql,timescaledb,Sql,Postgresql,Timescaledb,我在下面的安排中得到了数据,列中的时间戳看起来是相同的,但是没有办法以这样的方式实际导出数据,即在单个列上只给出一个时间戳。如何保持数据对的相关性 Timestamp, pizza shop, Timestamp, clothes store, Timestamp, stadium 7/1/2019 0:00:00, 2, 7/1/2019 0:00:00, 4, 7/1/2019 0:00:00, 5 7/1/2019 0:00:10, 3, 7/1/2019 0:00

我在下面的安排中得到了数据,列中的时间戳看起来是相同的,但是没有办法以这样的方式实际导出数据,即在单个列上只给出一个时间戳。如何保持数据对的相关性

    Timestamp, pizza shop, Timestamp, clothes store, Timestamp, stadium
    7/1/2019 0:00:00, 2, 7/1/2019 0:00:00, 4, 7/1/2019 0:00:00, 5
    7/1/2019 0:00:10, 3, 7/1/2019 0:00:10, 6, 7/1/2019 0:00:10, 7
您可以使用将csv文件装载为一个表,然后使用它选择另一个表

例如:

CREATE EXTENSION file_fdw;

CREATE SERVER files FOREIGN DATA WRAPPER file_fdw;

CREATE FOREIGN TABLE csvfile (
  pizzashop_ts timestamp with time zone,
  pizzashop_count int,
  clothesstore_ts timestamp with time zone,
  clothesstore_count int,
  stadium_ts timestamp with time zone,
  stadium_count int)
SERVER files 
OPTIONS ( filename '/path/to/csv.file', format 'csv', header 'true');
然后我们从表中多次选择,但每次只选择列对,将它们全部与UNION all组合,然后添加一个“源”列对数据进行分类:

SELECT pizzashop_ts AS "timestamp", pizzashop_count AS "count", 'pizza shop' AS source
FROM csvfile
UNION ALL
SELECT clothesstore_ts, clothesstore_count, 'clothes store' AS source
FROM csvfile
UNION ALL
SELECT stadium_ts, stadium_count, 'stadium' AS source
FROM csvfile;
这应该像这样布置您的CSV文件:

       timestamp        | count |    source
------------------------+-------+---------------
 2019-07-01 00:00:00+01 |     2 | pizza shop
 2019-07-01 00:00:10+01 |     3 | pizza shop
 2019-07-01 00:00:00+01 |     4 | clothes store
 2019-07-01 00:00:10+01 |     6 | clothes store
 2019-07-01 00:00:00+01 |     5 | stadium
 2019-07-01 00:00:10+01 |     7 | stadium
(6 rows)
当然,您可以将其转换为插入查询,以将数据插入到合适的表中


披露:我是一名EnterpriseDB(EDB)员工。

您能否澄清数据对之间的相关性?当你说“不可能”的时候,你是指一个程序还是一个人?我从中提取的数据源以两种格式之一传递给我:1。如上图2所示。或者单独选择,但您必须从我无法用于与自己的数据库交互的数据库中单独选择它(我正在尝试将导出不同数据表示形式的多个数据库合并在一起)。我的首要问题是我必须以不同的方式合并这些不同的表示,而这恰好是其中之一。时间戳似乎是相同的,因为我想知道是否有可能在不手动输入每个位置的情况下获取这些数据。如果我们假设我们有一个更大的数据集(40个不同的位置),在其中手动选择位置是低效的,是否有一些逻辑陈述可以让我跳过,或者是没有办法做到这一点?