19.07.2016, 01:15
|
Новичок на форуме
|
|
Регистрация: 19.07.2016
Сообщений: 3
|
|
Динамическое создание таблицы SQL
Добрый вечер уважаемые программисты. Я недавно только начал изучать javascript в университете (Испания, Компьютерная инженерия).
Сейчас прохожу практику в одной маленькой компании. И пишу для них локальный сайт. Сайт для поиска информации по базе (разные селекты, создание таблиц).
Все просто и понятно. Вчера они мне сказали добавить новый функционал.
P.s можете пропустить мой бред с вверху
Вопрос:
Мне нужно написать такой скрипт:
В mySql есть таблица с одним столбцом (ID primary kay).
Есть Excel файл (.xls) с него я должен читать колонку за колонкой. С этого Excel файла я должен создать таблицу в mySql.
Прочитав первую колонку, должен спросить у пользователя что он хочет сделать: Создать в таблице новое поле и записать туда данные с колонки Excel, игнорировать ее или добавить ее в содержимое уже в существующие поле в БД (то есть если есть в БД поле "Age" а в экселе по русски пишет "возраст", то добавить в "Age").
И так по очереди все колонки из Excel.
Это вообще возможно сделать?
Очень прошу помогите как это можно сделать. Гуглил три часа, ничего не могу найти. Я на javascript никогда не писал, в основном Java, Scala, Python, а тут на практике Веб. Помогите студенту
Всем буду очень благодарен за любую помощь.
|
|
19.07.2016, 06:04
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от Ambient
|
Есть Excel файл (.xls) с него я должен читать колонку за колонкой.
|
Так данные не импортируют.
Сообщение от Ambient
|
С этого Excel файла я должен создать таблицу в mySql.
Создать в таблице новое поле и записать туда данные с колонки Excel, игнорировать ее или добавить ее в содержимое уже в существующие поле в БД....
|
А ничего, что база данных, это не кладовая, а инструмент для работы с данными?
|
|
19.07.2016, 08:44
|
Новичок на форуме
|
|
Регистрация: 19.07.2016
Сообщений: 3
|
|
Цитата:
|
Так данные не импортируют.
|
Да я так уже делал, колонка за колонкой. Они работают с кровью. И есть таблица анализов. Большую половину анализов я считывал колонку за колонкой с эксел файла, а некоторые данные вводятся через форму.
Так они хотели я им сделал.
Теперь они хотят это. Я прям честно не знаю что делать.
Согласен с Вами Но так они хотят.
|
|
19.07.2016, 11:56
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от Ambient
|
Да я так уже делал, колонка за колонкой.
|
И очень плохо. В MySQL, да и не только, можно подготовить один запрос для многострочной записи данных, а то что делаете вы называется насиловать базу множеством запросов.
Но куда более интереснее сама постановка задачи, а именно - порождать столбцы в sql-таблице по пришедшему файлу. Это как? То есть, буквально следующее - пришло нечто с пятью колонками, породили такую таблицу в базе, пришло с десятью колонками и тоже нет проблем, породили.
Ну породили, а дальше то что, работать с этими таблицами вслепую? База это не свалка, а данные, которые не просто извлекаются, а зачастую по условиям, а это значит в запросах явно указываются имена полей. И каким же образом и чем будут обслуживаться такие таблицы, что и запросы динамически под каждую таблицу создаются, и на все случаи?
Либо вы некорректно сформулировали вопросы, либо ваш заказчик мается дурью, не понимая что есть данные.
Что касается работы с MySQL посредством JavaScript, то таковое JS в рамках веб-страницы недоступно. Есть MSSQL, есть ActiveX компоненты для работы с базой, но опять таки не в рамках веб страницы.
В среде Linux уже есть готовый сервер Apache/PHP/SQL. В рамках Windows IIS сервер, но лучше установить иной. РНР или иной серверный язык будет работать и с базой и обслуживать диалоги клеинт-сервер. РНР "общается" с базами посредством драйверов соответствующих. Если же вы сами хотите работать с MySQL, значит командная строка вам в помощь.
Или если на JS, значит подымайте Node.js на локальной машине и стройте на нем локальный сервер.
|
|
19.07.2016, 15:18
|
Профессор
|
|
Регистрация: 08.07.2016
Сообщений: 1,332
|
|
Цитата:
|
В mySql есть таблица с одним столбцом (ID primary kay).
Есть Excel файл (.xls)
|
Ну так через ODBC делаешь коннект к своему чудесному екзелю и работаешь с его сраными таблицами как с реляционной БД.
|
|
19.07.2016, 16:12
|
Новичок на форуме
|
|
Регистрация: 19.07.2016
Сообщений: 3
|
|
Цитата:
|
Ну породили, а дальше то что, работать с этими таблицами вслепую? База это не свалка, а данные, которые не просто извлекаются, а зачастую по условиям, а это значит в запросах явно указываются имена полей. И каким же образом и чем будут обслуживаться такие таблицы, что и запросы динамически под каждую таблицу создаются, и на все случаи?
|
Почему в слепую?
в php можно получить запросом имена всех столбцов базы. Зная имена столбцов можно делать селекты (SELECT). Дальше можно сделать форму через которую выбирать имя столбца и параметр. На пример (HDL = 1)
HDL - название столбца (через форму "select") и "= 1" параметр который вводит пользователь в поле сам.
Получиться что у пользователя есть список всех полей а параметр он введет сам. Будет такой запрос - (SELECT * FROM table_name WHERE HDL = 1)
Цитата:
|
Либо вы некорректно сформулировали вопросы, либо ваш заказчик мается дурью, не понимая что есть данные.
|
Согласен с Вами, заказчик как блондинка, просто говорит что он хочет и остальное его не волнует, а хочет именно так.
Цитата:
|
В среде Linux уже есть готовый сервер Apache/PHP/SQL. В рамках Windows IIS сервер, но лучше установить иной. РНР или иной серверный язык будет работать и с базой и обслуживать диалоги клеинт-сервер. РНР "общается" с базами посредством драйверов соответствующих. Если же вы сами хотите работать с MySQL, значит командная строка вам в помощь.
|
Все есть. Они не хотят это дело делать через phpmyadmin. Я установил сервер Linux Debian. На сервере есть Апатч, php, mysql, phpmyadmin. Дальше я сделал локальный сайт. Создал 1 таблицу (результаты крови). Дальше написал, что они могут в нее добавлять данные из экселя (42 столбца). При этом заполняя только 6 столбцов через форму, все остальные данные читаются с остальных файлов (кроме экселя есть еще пару текстовых файлов).
Теперь от меня хотят этого и ни как иначе. Даже не знаю что делать
|
|
19.07.2016, 22:12
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от Ambient
|
в php можно получить запросом имена всех столбцов базы.
|
РНР к этому отношения не имеет, с таким же успехом можно получить и столбцы, и их характеристики вообще только средствами SQL. Дело не в этом - если база данных это некая "резиновая модель", структура данных в таблицах которой никогда неизвестна, то никакие формы и выбор через них не помогут. Выбрать в форме поле, потом ... WHERE HDL = 1, это до банальности просто, а на практике все намного сложнее. Таблицы НЕ должны расти в ширину. Если такое происходит, то либо не обдумана структура данных и связи этой структуры, либо не удачно выбрана база данных под требуемую модель данных.
Сообщение от Ambient
|
Они не хотят это дело делать через phpmyadmin.
|
Я о РМА даже не заикался и они как заказчики правы, такое им не нужно, а вы как исполнитель даже предлагать такого не должны. РМА это средство администрирования для понимающих, а не для пользователей.
|
|
19.07.2016, 22:25
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
warren buffet - реинкарнация или второе пришествие kostyanet?
Еще появится флуд, изловлю и удавлю.
|
|
|
|