【问题标题】:PostgreSQL PHP - Use values of second table as column header and column description for values of first table in Excel/CSV exportPostgreSQL PHP - 使用第二个表的值作为 Excel/CSV 导出中第一个表的值的列标题和列描述
【发布时间】:2016-01-15 13:43:18
【问题描述】:

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

  1. 某列 |其他一些专栏 |又一个 | ...
  2. 描述文本 foo |说明text2 |吧富吧| ...
  3. 值 a |值 b |值 c | ...
  4. 值 aa |价值bb |价值 cc | ...

因此,标题行包含列名,然后是每一列的描述文本行,然后是数百行包含所有值的行。

在 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 可以做到这一点?

【问题讨论】:

  • 在 PHP 中使用 2 个查询可能会简单得多。第一个从mapping 获取数据并显示前两行(一个循环遍历每一行的结果),另一个用于获取其余数据并将它们显示为单独的行。
  • @jcaron 对我来说似乎很合理 - 添加它作为答案。

标签: php sql excel postgresql


【解决方案1】:

只需创建一个 FUNCTION 以将两个表格与您想要的格式合并

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

【讨论】:

  • 我想这是可能的,但据我所知,Excel 导出的 UTF-8 数据有问题,所以我必须走 PHP 的方式,先将其转换为 UTF -16LE。
  • 您可以使用COPYENCODING函数指定编码。很惊讶你遇到了 UTF-8 的问题,那是什么版本的 Excel?请注意,如果您从 Excel 中打开文件,而不是仅仅双击它并让 Excel 打开它,您可能有更多选项。
  • 它的 Excel 2010 并且它必须在没有任何进一步操作的情况下工作,因为使用它的人不是 PC 或 Excel 专家。如果一切都是英文的,它会工作,但如果我使用 UTF-8,Excel 中的德文字母是错误的。不过我会看看编码功能,谢谢!
【解决方案2】:

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

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

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

【讨论】:

  • 嗨@Picl,这是怎么回事?随意投票和/或接受任何对您有帮助的答案或 cmets。
  • 由于我们中的许多人身体不适,我不得不从事其他项目。一旦我有足够的时间整理所有内容,我就会回答并投票。抱歉,耽搁了。
猜你喜欢
  • 1970-01-01
  • 2020-03-08
  • 1970-01-01
  • 2020-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多