Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Динамическое создание таблицы SQL (https://javascript.ru/forum/misc/64076-dinamicheskoe-sozdanie-tablicy-sql.html)

Ambient 19.07.2016 01:15

Динамическое создание таблицы SQL
 
Добрый вечер уважаемые программисты. Я недавно только начал изучать javascript в университете (Испания, Компьютерная инженерия).

Сейчас прохожу практику в одной маленькой компании. И пишу для них локальный сайт. Сайт для поиска информации по базе (разные селекты, создание таблиц).
Все просто и понятно. Вчера они мне сказали добавить новый функционал.
P.s можете пропустить мой бред с вверху :)

Вопрос:
Мне нужно написать такой скрипт:
В mySql есть таблица с одним столбцом (ID primary kay).
Есть Excel файл (.xls) с него я должен читать колонку за колонкой. С этого Excel файла я должен создать таблицу в mySql.
Прочитав первую колонку, должен спросить у пользователя что он хочет сделать: Создать в таблице новое поле и записать туда данные с колонки Excel, игнорировать ее или добавить ее в содержимое уже в существующие поле в БД (то есть если есть в БД поле "Age" а в экселе по русски пишет "возраст", то добавить в "Age").
И так по очереди все колонки из Excel.

Это вообще возможно сделать? :agree: :help:
Очень прошу помогите как это можно сделать. Гуглил три часа, ничего не могу найти. Я на javascript никогда не писал, в основном Java, Scala, Python, а тут на практике Веб. Помогите студенту :cray:
Всем буду очень благодарен за любую помощь.

laimas 19.07.2016 06:04

Цитата:

Сообщение от Ambient
Есть Excel файл (.xls) с него я должен читать колонку за колонкой.

Так данные не импортируют.

Цитата:

Сообщение от Ambient
С этого Excel файла я должен создать таблицу в mySql.
Создать в таблице новое поле и записать туда данные с колонки Excel, игнорировать ее или добавить ее в содержимое уже в существующие поле в БД....

А ничего, что база данных, это не кладовая, а инструмент для работы с данными?

Ambient 19.07.2016 08:44

Цитата:

Так данные не импортируют.
Да я так уже делал, колонка за колонкой. Они работают с кровью. И есть таблица анализов. Большую половину анализов я считывал колонку за колонкой с эксел файла, а некоторые данные вводятся через форму.
Так они хотели я им сделал.

Теперь они хотят это. Я прям честно не знаю что делать.
Согласен с Вами:) Но так они хотят.

laimas 19.07.2016 11:56

Цитата:

Сообщение от Ambient
Да я так уже делал, колонка за колонкой.


И очень плохо. В MySQL, да и не только, можно подготовить один запрос для многострочной записи данных, а то что делаете вы называется насиловать базу множеством запросов.

Но куда более интереснее сама постановка задачи, а именно - порождать столбцы в sql-таблице по пришедшему файлу. Это как? То есть, буквально следующее - пришло нечто с пятью колонками, породили такую таблицу в базе, пришло с десятью колонками и тоже нет проблем, породили.

Ну породили, а дальше то что, работать с этими таблицами вслепую? База это не свалка, а данные, которые не просто извлекаются, а зачастую по условиям, а это значит в запросах явно указываются имена полей. И каким же образом и чем будут обслуживаться такие таблицы, что и запросы динамически под каждую таблицу создаются, и на все случаи?

Либо вы некорректно сформулировали вопросы, либо ваш заказчик мается дурью, не понимая что есть данные.

Что касается работы с MySQL посредством JavaScript, то таковое JS в рамках веб-страницы недоступно. Есть MSSQL, есть ActiveX компоненты для работы с базой, но опять таки не в рамках веб страницы.

В среде Linux уже есть готовый сервер Apache/PHP/SQL. В рамках Windows IIS сервер, но лучше установить иной. РНР или иной серверный язык будет работать и с базой и обслуживать диалоги клеинт-сервер. РНР "общается" с базами посредством драйверов соответствующих. Если же вы сами хотите работать с MySQL, значит командная строка вам в помощь.

Или если на JS, значит подымайте Node.js на локальной машине и стройте на нем локальный сервер.

warren buffet 19.07.2016 15:18

Цитата:

В mySql есть таблица с одним столбцом (ID primary kay).
Есть Excel файл (.xls)
Ну так через ODBC делаешь коннект к своему чудесному екзелю и работаешь с его сраными таблицами как с реляционной БД.

Ambient 19.07.2016 16:12

Цитата:

Ну породили, а дальше то что, работать с этими таблицами вслепую? База это не свалка, а данные, которые не просто извлекаются, а зачастую по условиям, а это значит в запросах явно указываются имена полей. И каким же образом и чем будут обслуживаться такие таблицы, что и запросы динамически под каждую таблицу создаются, и на все случаи?
Почему в слепую?
в 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 столбцов через форму, все остальные данные читаются с остальных файлов (кроме экселя есть еще пару текстовых файлов).

Теперь от меня хотят этого и ни как иначе. Даже не знаю что делать :(

laimas 19.07.2016 22:12

Цитата:

Сообщение от Ambient
в php можно получить запросом имена всех столбцов базы.


РНР к этому отношения не имеет, с таким же успехом можно получить и столбцы, и их характеристики вообще только средствами SQL. Дело не в этом - если база данных это некая "резиновая модель", структура данных в таблицах которой никогда неизвестна, то никакие формы и выбор через них не помогут. Выбрать в форме поле, потом ... WHERE HDL = 1, это до банальности просто, а на практике все намного сложнее. Таблицы НЕ должны расти в ширину. Если такое происходит, то либо не обдумана структура данных и связи этой структуры, либо не удачно выбрана база данных под требуемую модель данных.

Цитата:

Сообщение от Ambient
Они не хотят это дело делать через phpmyadmin.


Я о РМА даже не заикался и они как заказчики правы, такое им не нужно, а вы как исполнитель даже предлагать такого не должны. РМА это средство администрирования для понимающих, а не для пользователей.

laimas 19.07.2016 22:25

warren buffet - реинкарнация или второе пришествие kostyanet?

Еще появится флуд, изловлю и удавлю.


Часовой пояс GMT +3, время: 19:03.