PostgreSQL PHP - использовать значения второй таблицы в качестве заголовка столбца и описание столбца для значений первой таблицы в экспорте в Excel / CSV

1

некоторое время назад большой файл Excel был импортирован в таблицу PostgreSQL. Макет в Excel был таким (см. Номера списков в виде номеров строк):

  1. Некоторая колонна | Другая колонна | Еще один |...
  2. Описаниеtext foo | Описаниеtext2 | бар foo bar |...
  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?

  • 1
    Вероятно, будет намного проще с двумя запросами в PHP. Первый, который получает данные из mapping и отображает первые две строки (один цикл по результатам для каждой), а другой - для извлечения остальных данных и отображения их в виде отдельных строк.
  • 0
    @jcaron Кажется разумным для меня - добавьте это как ответ.
Теги:
excel

2 ответа

0

Вероятно, это будет намного проще с 2-мя запросами в PHP:

  1. Первый, чтобы получить данные от mapping и отображения первых двух строк (один цикл по результатам для каждого)

  2. Еще один, чтобы получить остальные данные и отобразить их как отдельные строки

  • 0
    спасибо, пробую таким образом сейчас.
  • 0
    Привет @Picl, как все прошло? Не стесняйтесь голосовать и / или принимать любые ответы или комментарии, которые помогли вам.
Показать ещё 1 комментарий
0

Просто создайте FUNCTION, чтобы объединить обе таблицы с вашим желаемым форматом

Затем используйте COPY для создания файла excel. Нет необходимости использовать php здесь

  • 0
    Я предполагаю, что это было бы возможно, но, насколько я вижу, в Excel возникают проблемы с экспортируемыми данными UTF-8, поэтому мне нужно пойти по пути PHP и сначала преобразовать его в UTF-16LE.
  • 0
    Вы можете указать кодировку, используя функцию ENCODING COPY . Удивлен, что у вас проблемы с UTF-8, но какая версия Excel? Обратите внимание, что у вас может быть больше вариантов, если вы откроете файл из Excel, а не просто дважды щелкните по нему и дадите Excel открыть его.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню