idea自定义数据导出格式

Posted amwyyyy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了idea自定义数据导出格式相关的知识,希望对你有一定的参考价值。

 最近需要从数据库导出特定格式的数据,写代码导太麻烦了,试了几个mysql客户端都只能导固定格式的,最后发现idea的Database工具可以自定义导出的格式,所以就试了下。  

 导出功能在这个位置  

技术分享图片

 当然这些是idea默认的,想自定义点击Go to Scripts Directory  

技术分享图片

 可以直接修改原来的脚本,也可以新建,新建的也会在刚才的右键菜单里显示,很方便。  
 从原来的脚本可以看出,idea支持三种脚本语言:js、groovy和clojure,可以用自己熟悉的语言写,这里我选的是js。  
 最终导出的文件后缀名是由脚本的文件名决定的,如xxx.xml.js,导出的文件是xml格式的。  

 数据库的信息可以直接从上下文中取,分别有:  
 COLUMNS     List<DataColumn> // 每一列的信息  
 DataColumn  { columnNumber(), name() } // 列信息对象有两个方法,取列序号和列名  

 ROWS        Iterable<DataRow> //第一行的信息  
 DataRow     { rowNumber(); first(); last(); data(): List<Object>; value(column): Object } //行对象  

 OUT         { append() } // 这个是用来输出到文件  
 FORMATTER   { format(row, col); formatValue(Object, col) } //取某行某列的值  

 TABLE  // 整个表的信息,最常用的是TABLE.getName(),获取表名  

 

function eachWithIdx(iterable, f) { var i = iterable.iterator(); var idx = 0; while (i.hasNext()) f(i.next(), idx++); }
// 特殊字符转义
function escape(str) {
    str = str.replaceAll("\t|\b|\\f|\\r|\\n|\\r\\n", "");
    str = com.intellij.openapi.util.text.StringUtil.escapeXml(str);
    str = str.replaceAll("\"", """);
    if (str == null || str == ‘NULL‘ || str == ‘null‘) {
        str = ‘‘;
    }
    return str;
}

// 换行
var NEWLINE = "\n";

function output() { for (var i = 0; i < arguments.length; i++) { OUT.append(arguments[i]); } }

output("<?xml version=\"1.0\" encoding=\"UTF-8\"?>", NEWLINE);
output("<dataset>", NEWLINE);

eachWithIdx(ROWS, function (row) {
    output("    <", TABLE.getName());
    eachWithIdx(COLUMNS, function (col) {
        output(" " + col.name(), "=\"", escape(FORMATTER.format(row, col)), "\"");
    });
    output(" />", NEWLINE);
});

output("</dataset>")

生成的文件格式

<?xml version="1.0" encoding="UTF-8"?>
<dataset>
    <sys_user id="1" username="123" password="123" mobile="123" />
    <sys_user id="2" username="321" password="123" mobile="222555" />
    <sys_user id="3" username="111" password="321" mobile="12313" />
</dataset>

 

技术分享图片













以上是关于idea自定义数据导出格式的主要内容,如果未能解决你的问题,请参考以下文章

POI 使用XSSF导出Excel自定义单元格颜色为啥始终是黑色的?代码如下

TensorFlow 自定义模型导出:将 .ckpt 格式转化为 .pb 格式

2.自定义@Excel注解实现数据Excel形式导入导出

将 Intellij IDEA 代码格式化规则导出到 Eclipse

idea代码格式对齐

mysql数据库导出xls-自定义