- PVSM.RU - https://www.pvsm.ru -
В DataGrip, как и в других наших IDE с поддержкой баз данных, есть механизм экспорта данных. Пользователь выбирает формат экспорта из предложенных или создает его сам.
Таблица, представление или результат могут быть экспортированы в файл или буфер обмена.
Экспорт в файл:
— Контекстное меню на таблице или представлении в дереве → Dump data to file.
— Контекстное меню на запросе в редакторе → Execute to file.
— В панели инструментов редактора данных или результата нажать кнопку Dump data → To File...
Экспорт в буфер обмена:
— Выбрать данные для экспорта в редакторе данных или результате и нажать Copy или Ctrl/Cmd+C.
— В панели инструментов результата или редактора данных нажать кнопку Dump data → To File...
Некоторые форматы настроены по умолчанию. Сам механизм экспортирования мы зовём «экстрактором»: в IDE уже встроены несколько экстракторов для разных форматов. На примере рассмотрим экспорт данных в буфер обмена, но это работает и для экспорта в файл.
В меню слева от кнопки Dump Data выберите экстрактор.
Набор INSERT/UPDATE запросов или JSON, CSV, HTML — решать вам. Здесь [1] описано, как работают встроенные экстракторы, не будем на этом заострять внимание.
Логично, что пользователи хотят расширить встроенные возможности.
Чтобы создать собственный экстрактор для формата на основе CSV (или, строго говоря, DSV), в этом же меню нажмите на Configure CSV formats…
Здесь можно внести изменения в уже существующие экстракторы или создать свой. Например, Confluence Wiki Markup.
Сохранённый новый экстрактор появится в меню:
Для более сложных случаев используйте скрипты. Несколько встроенных экстракторов — это скрипты на Groovy или JavaScript: CSV-Groovy.csv.groovy, HTML-JavaScript.html.js и другие. В наших примерах будем использовать Groovy.
Разберём имя файла CSV-Groovy.csv.groovy:
CSV-Groovy — имя скрипта.
csv — расширение файла с результатом.
groovy — расширение файла скрипта. Если редактируете его в IntelliJ IDEA, поможет иметь подсветку кода и автодополнение.
Скрипты обычно расположены в `Scratches and Consoles/Extensions/Database Tools and SQL/data/extractors`. Чтобы попасть в эту папку, нажмите Go to scripts directory в меню выбора экстракторов.
Изменяйте существующие экстракторы или добавляйте новые в эту папку. Например, создадим экстрактор для экспорта данных в одну строчку через запятую. Это удобно, если значения из одной столбцы вставят в оператор IN предложения WHERE.
На основе существующего экстрактора мы создали новый: CSV-ToOneRow-Groovy.csv.groovy [2].
Доступно в контексте:
OUT {append()} //объект для вывода данных
FORMATTER {format(row, col); formatValue(Object, col)} //конвертер данных в строку
TRANSPOSED Boolean //нажата ли кнопка Transpose (в меню по иконке с шестеренкой)
COLUMNS List<DataColumn> //выбранные столбцы
ALL_COLUMNS List<DataColumn> //все столбцы
//Это равные объекты, если ничего не выделено.
ROWS Iterable<DataRow> //выбранные строчки, где:
DataRow { rowNumber(); first(); last(); data(): List<Object>; value(column): Object }
DataColumn { columnNumber(); name() }
TABLE DasTable //текущая таблица
В DasTable два важных метода:
До версии 2017.3:
DasObject getDbParent()
JBIterable<DasObject> getDbChildren(Class, ObjectKind)
Начиная с 2017.3:
DasObject getDasParent()
JBIterable<DasObject> getDasChildren(ObjectKind)
Ещё про API читайте здесь [3].
Если вы проделываете это в IntelliJ IDEA с установленным Groovy, будут работать подсветка и автодополнение:
Положите новый скрипт в папку и вперед: он готов к использованию и виден в меню.
Например, скопируйте эти значения и вставьте в запрос.
Ещё один пример: в MySQL и PostgreSQL допускается многострочный синтаксис для INSERT. Изменив текущий экстрактор для INSERT’ов, получим новый файл: SQL-Inserts-MultirowSynthax.sql.groovy [4].
Выбираем только что созданный экстрактор, копируем данные.
Готово:
Некоторые пользователи уже разобрались с этим и написали свои экстракторы:
— Текстовая таблица [5]. (Похожий [6]).
— Массив Php [7].
— Markdown [8].
— DBunit XML [9].
Будет круто, если этот текст вдохновит вас писать свои экстракторы и делиться ими с другими!
Команда DataGrip
Автор: Максим Соболевский
Источник [10]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/mysql/267998
Ссылки в тексте:
[1] Здесь: https://www.jetbrains.com/datagrip/features/importexport.html
[2] CSV-ToOneRow-Groovy.csv.groovy: https://gist.github.com/moscas/793e441b12872b8339a1471966343439#file-csv-toonerow-groovy-csv-groovy
[3] здесь: https://intellij-support.jetbrains.com/hc/en-us/community/posts/205993979-What-objects-functions-are-available-for-custom-data-extractors-
[4] SQL-Inserts-MultirowSynthax.sql.groovy: https://gist.github.com/moscas/793e441b12872b8339a1471966343439#file-sql-inserts-multirowsynthax-sql-groovy
[5] Текстовая таблица: https://gist.github.com/mvitaly/106347c5edfa6614d5311b228b4446c9
[6] Похожий: https://github.com/aukevanleeuwen/intellij-extractors/blob/master/Table-Text-Groovy.txt.groovy
[7] Массив Php: https://gist.github.com/pthiers/6afa65b68947770e5b7ec07bec2117f2
[8] Markdown: https://gist.github.com/jimschubert/a9dc46dafc891227f25d82a934a7df72
[9] DBunit XML: https://ssmusoke.com/2017/04/17/techtip-dbunit-export-from-jetbrains-datagrip/
[10] Источник: https://habrahabr.ru/post/342094/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.