некоторое время назад большой файл Excel был импортирован в таблицу PostgreSQL. Макет в Excel был таким (см. Номера списков в виде номеров строк):
Таким образом, была строка заголовка с именами столбцов, затем строка с текстом описания для каждого столбца и после этого сотни строк со всеми значениями.
В 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?
Вероятно, это будет намного проще с 2-мя запросами в PHP:
Первый, чтобы получить данные от mapping
и отображения первых двух строк (один цикл по результатам для каждого)
Еще один, чтобы получить остальные данные и отобразить их как отдельные строки
Просто создайте FUNCTION, чтобы объединить обе таблицы с вашим желаемым форматом
Затем используйте COPY для создания файла excel. Нет необходимости использовать php здесь
ENCODING
COPY
. Удивлен, что у вас проблемы с UTF-8, но какая версия Excel? Обратите внимание, что у вас может быть больше вариантов, если вы откроете файл из Excel, а не просто дважды щелкните по нему и дадите Excel открыть его.
mapping
и отображает первые две строки (один цикл по результатам для каждой), а другой - для извлечения остальных данных и отображения их в виде отдельных строк.