PostgreSQL PHP - 在Excel/CSV导出中使用第二个表的值作为列标题和列描述作为第一个表的值


PostgreSQL PHP - Use values of second table as column header and column description for values of first table in Excel/CSV export

前段时间,一个大的Excel文件被导入到PostgreSQL表中。Excel中的布局是这样的(请参阅将数字列为行号):

  1. 部分专栏 | 其他一些专栏 | 又一个 | ...
  2. 描述文本 foo | 描述文本2 | 酒吧 foo 酒吧 | ...
  3. 值 a | 值 b |值 c |...
  4. 价值 AA | 价值 bb |价值抄送 |...
因此,标题行包含列名称,然后是

一行,每列都有描述文本,然后是包含所有值的数百行。

在PostgreSQL中创建了两个表。

表1:

CREATE TABLE t1 (
    t1_id integer NOT NULL
    col1 inet,
    some_other_col character varying,
    another_one integer,
    ...
);

表2:

CREATE TABLE mapping (
    mapping_id integer NOT NULL
    colname character varying,
    mapping character varying,
    description character varying,
);
INSERT INTO mapping VALUES (1, 'col1', 'Some Column', 'Descriptiontext foo');
INSERT INTO mapping VALUES (2, 'some_other_col', 'Some other Column', 'Descriptiontext2');
INSERT INTO mapping VALUES (3, 'another_one', 'Yet another one', 'bar foo bar');

我现在的问题是,如何再次合并这些表以导出与旧表格式相同的Excel工作表?我是否需要PHP,或者仅使用SQL就可以这样做吗?

只需创建一个函数即可将两个表与您想要的格式合并

然后使用 COPY 创建 excel 文件。这里不需要使用 php

在 PHP 中使用 2 个查询可能会简单得多:

  1. 第一个从mapping获取数据并显示前两行(对每行的结果进行一次循环)

  2. 另一个用于获取其余数据并将它们显示为单独的行