Загрузка таблицы CSV для статьи

У меня есть сайт статей на PHP/MySQL. Что я хочу разрешить кому-то сделать, так это загрузить CSV-файл, чтобы он отображался в виде таблицы в самой статье. Я хочу избежать создания таблицы CREATE каждый раз, так как легко могу получить тысячи таблиц.

Мысли о том, как лучше всего хранить табличную информацию эффективно и постоянно?


person Macgyver    schedule 29.04.2011    source источник


Ответы (3)


Если вы не собираетесь манипулировать данными позже, вероятно, было бы намного проще просто преобразовать содержимое файла CSV в таблицу HTML и сохранить его как часть html статьи. Простой поиск по запросу csv to html table возвращает много, множество предустановленных функций, некоторые на php; Проверь их.

person eykanal    schedule 29.04.2011

Подумайте о том, чтобы хранить CSV-данные просто в виде файла. Отображать содержимое csv-файла в виде таблицы при рендеринге страницы. Применяйте логику JavaScript/jQuery для лучшего взаимодействия с пользователем (например, сортировка, фильтрация).

Если вы не хотите обрабатывать или объединять информацию из файла csv, нет необходимости хранить ее в реляционной таблице mysql.

person Richard    schedule 29.04.2011

Создание новой таблицы базы данных для каждого CSV звучит как излишество. Вам никогда не придется изменять схему базы данных таким образом. Вместо этого спроектируйте свою схему таким образом, чтобы можно было вставлять такие данные.

Вот одно из возможных решений: у вас может быть одна таблица, содержащая:

  1. Идентификатор, который однозначно идентифицирует таблицу
  2. Идентификатор, который однозначно идентифицирует строку в этой таблице.
  3. Имя столбца
  4. Значение ячейки

SQL:

CREATE TABLE tables(
  table_id int,
  row_number int,
  column_name varchar(50),
  cell_value varchar(50) 
)

--row 1
INSERT INTO tables VALUES (1, 1, 'name', 'George Washington');
INSERT INTO tables VALUES (1, 1, 'dob', 'April 30, 1789');

--row 2
INSERT INTO tables VALUES (1, 2, 'name', 'John Adams');
INSERT INTO tables VALUES (1, 2, 'dob', 'March 4, 1797');
person Michael    schedule 29.04.2011