Хранить данные электронных таблиц в базе данных SQL - PullRequest
1 голос
/ 16 июня 2009

Я хочу сохранить данные электронной таблицы в базе данных, поэтому сейчас я использую шаблон ключ / значение, чтобы сохранить то же самое, но это занимает слишком много времени, чтобы извлечь их из базы данных, если данные огромны. У кого-нибудь есть лучший способ сделать то же самое. Как Google сохраняет свои данные электронных таблиц?

Обычно мне приходится показывать от 30 до 40 столбцов и 10000 строк на веб-странице с размером страницы 500 или 1000 для разбивки на страницы. Данные для позиции с ценой.

Моя текущая структура базы данных выглядит следующим образом.

Стол столбца Column_Id int Column_Name nvarchar (50)
Column_Type nvarchar (50)

Таблица значений значения crit_id int column_id int row_id int column_contents nvarchar (100)

Ответы [ 3 ]

2 голосов
/ 16 июня 2009

A наивная схема для хранения электронной таблицы:

create table spreadsheet
(
id INTEGER primary key,
name TEXT UNIQUE not null
);

create table cell
(
id INTEGER primary key,
spreadsheet_id INTEGER NOT NULL REFERENCES spreadsheet(id),
row INTEGER not null,
col INTEGER not null,
content TEXT NOT NULL
);
0 голосов
/ 16 июня 2009

Учитывая, что Excel широко считается инструментом по умолчанию для базы данных, я не уверен, что есть что-то о видах данных, которые хранятся в электронных таблицах, за исключением того, что это одна таблица и есть ограничение на количество строк.

Я не думаю, что есть достаточно различий, чтобы сказать что-то еще, кроме «Это данные, которые определяют структуру, а не источник».

0 голосов
/ 16 июня 2009

Если вы просто загружаете и сохраняете его, а не запрашиваете много, я бы порекомендовал поле XML для всего листа, или каждой страницы, или хотя бы каждой строки.

Мой другой вопрос: как вы запрашиваете это, чтобы заполнить свой лист? Вы используете циклы и открываете отдельные запросы для каждой строки или столбца?

Ваш дизайн может быть неоптимальным, но на самом деле он должен работать прилично для набора данных, который вы описываете, ИМХО.

...