[dbAdmin] Управление таблицами БД. Релиз.

Предлагаю вашему вниманию первую версию модуля для управления таблицами базы данных. Пока функционал достаточно скромный, но разработчикам немного упростит жизнь.

Основные возможности:
— просмотр таблиц;
— переименование, очищение и удаление таблиц;
— экспорт таблиц в текстовый файл;
— поиск таблицы по имени или классу;
— выполнение sql запросов.



После моего прошлого анонса произошло важное изменение — теперь список таблиц хранится в специальной таблице, а не зачитывается из базы. Что это дает? Теперь для таблицы можно указать класс объекта MODX. А это дает возможность использовать функционал xPDO и расширяет функциональность модуля. Например, можно изменять данные в выбранной таблице, как в phpMyAdmin (пока не реализовано), сортировать столбцы, выполнять sql запрос через указание класса, искать таблицу по классу и т.д.
Единственный недостаток — необходимость поддерживать актуальность этой таблицы. Т.е. когда добавили таблицу в MySql (например, при установке какого-нибудь компонента) или удалили, нужно синхронизировать таблицу. Но думаю, это небольшая плата за удобства, которые предоставляет xPDO. Тем более, что синхронизация достаточно простая — нужно нажать кнопку «Синхронизация» когда на ней появляется желтый восклицательный знак (см. картинку). С версии 1.0.0-pl синхронизация производится автоматически.
Кстати, системные таблицы с нужными параметрами добавляются при установке компонента. Для пользовательский таблиц нужно самостоятельно указать класс и пакет. Последний нужен для xPDO.


Работать с компонентом достаточно просто и интуитивно. Если нужно выгрузить всю базу данных, нажимаем кнопку «Экспорт базы данных». Если нужно выполнить операции экспорта, очистки или удаления нескольких таблиц, работаем с меню «Массовые действия». Для работы с одной таблицей можно пользоваться кнопками из колонки «Действия».
Кстати, в этой колонке есть еще кнопка «Просмотр таблицы», которая вызывает окно с данными этой таблички. Пока только для просмотра, но в дальнейшем и с возможностью редактирования данных.

Еще одна фича компонента — выполнение sql запросов. Для этого есть отдельная вкладка SQL. Там можно писать стандартные запросы MySql. А так как у нас есть карта таблиц и классов, то возможен вот такой синтаксис:

select pagetitle, uri from {modResource}

Результат запроса показывается в нижней части пока через print_r. В дальнейшем планирую вывод в окне.

Разрешения
Для работы с компонентом пользователь должен иметь соответствующие права.
  • tables_list — Разрешает вывод списка таблиц.
  • table_view — Разрешает просмотр таблицы.
  • table_save — Разрешает сохранять данные.
  • table_truncate — Разрешает удалять записи из таблицы (truncate table).
  • table_remove — Разрешает удалять таблицу (drop table).
  • table_export — Разрешает экспорт таблицы.
  • sql_query_execute — Разрешает выполнение sql запросов.
Администратору с sudo дозволено всё.

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

Проект на Github.



Дополнительная информация

Полная документация.
Версия 1.1.0.
Сергей Шлоков
13 августа 2015, 08:04
modx.pro
7
3 392
+12
Поблагодарить автора Отправить деньги

Комментарии: 17

Воеводский Михаил
13 августа 2015, 12:40
0
Мне кажется компонент нужный и пригодится многим.


Несомненно. Сергей. по описанию просто сказочный компонент получился!
    Сергей Шлоков
    13 августа 2015, 14:16
    0
    Замечательный — это да, а сказочный — это ты загнул. :)
    Эх, времени бы побольше… столько фантазий.
    Вчера у нас около дома на Москве реке битум горел… Дети визжали от эмоций… Дымища, вонища, темнотища, вертолеты, пожарные, телевидение… А когда потухло, пошли смотреть. Потом еще все новости надо обязательно посмотреть — смотри как горит, мы туда ходили…
    Полдня пролетело. Какая уж тут работа… И сегодня вечером пойдем, проверим, вдруг дяди опять тушить будут. Ни секунды времени для себя. :)
    Сергей Шлоков
    13 августа 2015, 16:36
    0
    Добавил видео для визуального восприятия. Плюс для себя — осваиваю видеокасты.
      Виталий Дощенко
      17 августа 2015, 22:06
      +1
      Выложил 1.0.0 pl в Магазин modstore.pro/packages/utilities/dbadmin
        Владимир Ульяновский
        20 августа 2015, 23:00
        0
        При экспорте: «Ошибка путь не найден», где искать путь?
          Сергей Шлоков
          21 августа 2015, 08:31
          0
          Проверьте, если ли папка tmp в /assets/components/dbadmin. Если нет, создайте.
          Николай
          20 сентября 2015, 17:55
          0
          А у меня такая проблема. Выбираешь просмотреть таблицу, появляется окно, записей там не видно, пишет — «Нет данных для вывода». Нажимаю кнопку обновить — вечный лоадер. Хотя в общей таблице, отображено количество записей и объём памяти. На двух сайтах ставил дополнение (разные сервера), на обоих одно и тоже.
            Сергей Шлоков
            20 сентября 2015, 18:17
            +1
            Скорее всего это. В следующем обновлении будет восстановлена поддержка PHP 5.3
              Николай
              21 сентября 2015, 14:19
              0
              Круто! Да, у меня как раз 5.3 стоит…
                Николай
                22 сентября 2015, 01:45
                +1
                А ещё было бы неплохо при экспорте таблиц сделать название экспортного файла как и у самих таблиц, а ещё лучше с датой и временем экспорта.
              @ndrew
              22 января 2016, 18:44
              0
              Ошибка при экспорте на хостинг #1054 — Unknown column 'live' in 'field list'

              Есть два sql файла, один с phpMyAdmin хостинга все норм, второй с dbAdmin экспортится с ошибкой.

              этот отрезок у обоих одинаковый:
              CREATE TABLE IF NOT EXISTS `modx_slideshow_slide` (
              бла
              бла
              бла
              `slide_status` set('live','archive','deleted','restore_point','TBD') DEFAULT 'TBD',

              Вся запарка в поле № 8, как ее сохраняет dbAdmin, а именно там где значение live без одинарных кавычек:
              (1, 1, 0, '2015-12-27 00:00:00', '2018-12-23 00:00:00', '2015-12-27 00:08:10', 1, ive, 1,

              Вот с phpMyAdmin хостинга:
              (1, 1, 0, '2015-12-27 00:00:00', '2018-12-23 00:00:00', '2015-12-27 08:08:10', 1, 'live', 1,
                @ndrew
                22 января 2016, 21:42
                0
                Проблема в том что не корректно определял поле SET и пропускал его без одинарных кавычек, в итоге добавил еще условие elseif в файл core/components/dbadmin/processors/mgr/tables/export.class.php на 105 строке и все стало ок.

                if ( is_null($rows[$i][$j]) ) {
                $sql .= 'NULL';
                } elseif ($fields[$j]['type'] == 'string') {
                $val = '\''.addslashes($rows[$i][$j]).'\'';
                $sql .= strtr(
                $val,
                array("\n" => '\n', "\r" => '\r', "\t" => '\t')
                );
                } elseif (!is_numeric($rows[$i][$j])) {
                $sql .= '\''.$rows[$i][$j].'\'';

                } else {
                $sql .= $rows[$i][$j];
                }

                Автору большой респект за такое классное дополнение!
                Andrey Extra
                09 февраля 2016, 12:35
                0
                При просмотре таблицы всплывающее окно где-то за пределами экрана, как вернуть его обратно? Удаление и установка пакета не помогают.
                  Сергей Шлоков
                  09 февраля 2016, 13:27
                  +1
                  Монитор зажевал окно, нужно открутить заднюю стенку и там посмотреть.
                  Или как вариант — открыть консоль (F12), найти
                  <div id="dbadmin-table-data-window" ...
                  и выставить ему свойство TOP в положительное значение.
                    АндрейЧ
                    07 октября 2017, 22:48
                    0
                    Сергей, добрейшего дня, научите пожалуйста создать товары через импорт-экпорт с sql-базы

                    Не пойму в каких таблицах лежат продукты?
                    Товары со старого сайта не появились, хотя я экспортировал-импортировал следующие таблицы:

                    modx_ms2_order_products
                    modx_ms2_products
                    modx_ms2_product_categories
                    modx_ms2_product_files
                    modx_ms2_product_links
                    modx_ms2_product_options

                    Других таблиц со словом «Product» нет…
                      Сергей Шлоков
                      09 октября 2017, 07:32
                      0
                      К сожалению, помочь нечем. Я с минишопом никак.
                  Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                  17