Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.07.2016, 01:15
Новичок на форуме
Отправить личное сообщение для Ambient Посмотреть профиль Найти все сообщения от Ambient
 
Регистрация: 19.07.2016
Сообщений: 3

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

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

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

Это вообще возможно сделать?
Очень прошу помогите как это можно сделать. Гуглил три часа, ничего не могу найти. Я на javascript никогда не писал, в основном Java, Scala, Python, а тут на практике Веб. Помогите студенту
Всем буду очень благодарен за любую помощь.
Ответить с цитированием
  #2 (permalink)  
Старый 19.07.2016, 06:04
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

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

Сообщение от Ambient
С этого Excel файла я должен создать таблицу в mySql.
Создать в таблице новое поле и записать туда данные с колонки Excel, игнорировать ее или добавить ее в содержимое уже в существующие поле в БД....
А ничего, что база данных, это не кладовая, а инструмент для работы с данными?
Ответить с цитированием
  #3 (permalink)  
Старый 19.07.2016, 08:44
Новичок на форуме
Отправить личное сообщение для Ambient Посмотреть профиль Найти все сообщения от Ambient
 
Регистрация: 19.07.2016
Сообщений: 3

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

Теперь они хотят это. Я прям честно не знаю что делать.
Согласен с Вами Но так они хотят.
Ответить с цитированием
  #4 (permalink)  
Старый 19.07.2016, 11:56
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

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

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

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

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

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

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

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

Или если на JS, значит подымайте Node.js на локальной машине и стройте на нем локальный сервер.
Ответить с цитированием
  #5 (permalink)  
Старый 19.07.2016, 15:18
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Цитата:
В mySql есть таблица с одним столбцом (ID primary kay).
Есть Excel файл (.xls)
Ну так через ODBC делаешь коннект к своему чудесному екзелю и работаешь с его сраными таблицами как с реляционной БД.
Ответить с цитированием
  #6 (permalink)  
Старый 19.07.2016, 16:12
Новичок на форуме
Отправить личное сообщение для Ambient Посмотреть профиль Найти все сообщения от Ambient
 
Регистрация: 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 столбцов через форму, все остальные данные читаются с остальных файлов (кроме экселя есть еще пару текстовых файлов).

Теперь от меня хотят этого и ни как иначе. Даже не знаю что делать
Ответить с цитированием
  #7 (permalink)  
Старый 19.07.2016, 22:12
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

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

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

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

Я о РМА даже не заикался и они как заказчики правы, такое им не нужно, а вы как исполнитель даже предлагать такого не должны. РМА это средство администрирования для понимающих, а не для пользователей.
Ответить с цитированием
  #8 (permalink)  
Старый 19.07.2016, 22:25
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

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

Еще появится флуд, изловлю и удавлю.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прошу раскритиковать наслойку работы с MySql. Alasdair Node.JS 4 21.11.2015 20:06
Динамическое обновление таблицы БД X-man AJAX и COMET 8 03.10.2013 12:14
Динамическое удаление строк таблицы Tankist Events/DOM/Window 16 03.07.2013 16:42
Динамическое создание таблицы. Проблема с ИЕ Rain Элементы интерфейса 8 24.09.2012 10:46
Динамическое создание таблицы Arfey Общие вопросы Javascript 7 10.06.2010 14:14