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

#php #mysql #create-table #import-from-csv

#php #mysql — сервер #создать таблицу #импорт из csv

Вопрос:

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

Что думаете о наилучшем способе эффективного и постоянного хранения табличной информации подобным образом?

Ответ №1:

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

Ответ №2:

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

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

Ответ №3:

Создание новой таблицы базы данных для каждого 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');