В ответ
radv, Platon и BAZAg:
Вы правы. У меня и был вариант нулевую строку таблицы обозвать значением из переменной и следом загружать список. Но заморочки были в другом.
Первая заморочка. Касаемо количества и обозначения столбцов.
Столбцы в таблице обозначаются литерами A, B, C и т.д. После столбца Z идет AB и далее.
A.....Z
AB.....ZB
AC.....ZC
и т.д., вплоть до
AZ.....ZZ
В результате получаем 702 столбца. А дальше что?
Мне же надо несколько тысяч столбцов. Как их обозначить?
Думаю, что зеннотаблицы построены по такому же принципу, что и в Exel. Поковырял Exel и вот:
Технические характеристики и ограничения листа и книги exel
Общее количество строк и столбцов на листе | 1 048 576 строк и 16 384 столбца |
Ширина столбца | 255 знаков |
Общее количество знаков в ячейке | 32 767 знаков |
Количество листов в книге | Ограничено объемом доступной оперативной памяти (по умолчанию 1 лист) |
Количество независимых ячеек, которые можно выделить | 2 147 483 648 ячеек |
Точность представления чисел, разрядов, не более | 15 цифр. |
Допустимое отрицательное число, не менее | -2,2251E+308 |
Допустимое положительное число, не менее | 2,2251E-308 |
Допустимое положительное число, не более | 9,99999999999999E+307 |
Допустимое отрицательное число, не более | -9,99999999999999E+307 |
Как обозначить 16 000 столбиков?
Как оказалось, ларчик открывался, как всегда, довольно просто. После неопределенного количества тыканий по клавиатуре обозвал столбик А циферкой 0.
"Ура! Заработало!" (автор - Матроскин. Кот.)
Т.е. получается, что столбцы нумеруются так же, как и строки ( 0, 1, 2....). Вот этого я не знал, и в документации и на форумах об этом ни строчки.
Теперь можно через переменную с увеличением счетчика присваивать столбцу номер и добавлять в него данные из списка, в котором нулевая строка будет названием столбца.
Вторая заморочка. Касаемо взятия значений по столбцам. Придется городить огород из переменных. Но это уже вопрос решаемый. (мускулами mysql). (Как я рассчитывал, но...)
А теперь, собственно, главная причина всех этих телодвижений.
Сначала хотел всё это организовать на MYSQL. Но столкнулся со следующей ситуацией: При добавлении первого столбца в таблицу мускула всё проходит гладенько. При добавлении второго столбца запись в нем делается со строки, следующей за последней строкой первого столбца, т. е. если последняя строка первого столбца имеет номер, например 1000, то первая строка второго столбца имеет номер 1001 и так далее. Получается эдакая лесенка. Или у меня кривые ручонки? Вопрос риторический, не надо.
По документации:
При добавлении одиночных записей используется команда INSERT. В самом простом варианте ее применения необходимо задать значения каждого столбца, в том порядке, в каком они были перечислены в команде CREATE TABLE.
INSERT INTO tablename
-> VALUES ('name','name2','name3',.....,'nameN'); Этот вариант, при большом количестве столбцов, совсем не вариант
)
Второй способ - загрузить готовый текстовый файл:
LOAD DATA LOCAL INFILE "файл.txt" INTO TABLE tablename;
Чем я и решил воспользоваться, потирая потные от предвкушения ручонки. Ведь, насколько я полагаю, зеннотаблица является текстовым файлом.
Еще раз подшаманил шаблон, запустил в мейкере. Пост/гет летает, аж свист стоит. Пью кофе, наслаждаюсь. За четверть часа напарсил 800 000 с хвостиком строк, составился список и начал загружаться в таблицу. И пиндец. Всё встало колом. Проект замер. Мышка еле двигается. С трудом открылся диспетчер задач. Мать моя, материнская плата! Память загружена на 98%. При этом два браузерных потока с инстансами в работающем постере всего 15%, а мейкер аж 75%, плюс остальные процессы. После полутора часов ожидания пришлось принудительно вырубить машину. Повторил. То же. Т.е. работа с таблицами, получается, сильно нагружает комп, тем более с таким количеством данных. А если в ней будет, скажем, 1000 столбцов, а в каждом несколько сот тысяч строк? Расстроился - пиндец!
Мысли по этому поводу: Работать с мускулом. Уменьшать количество столбцов и увеличивать количество таблиц. Ручками прописывать VALUES в переменные. То ещё удовольствие.
Как отнестись к вышеизложенному. Да никак. Это просто моя ситуация и я решил скинуть накопившееся. А может я где-то что-то упустил? Пойду напьюсь.