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>


EasyExcel是一款基于Java的开源Excel操作工具,它提供了简单易用的API,可以方便地读取、写入和操作Excel文件。下面是使用EasyExcel的一些基本步骤: 1. 引入EasyExcel依赖:在项目的pom.xml文件中添加EasyExcel的依赖项,例如: ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.2.10</version> </dependency> ``` 2. 创建Excel文件:使用EasyExcel提供的API,可以创建一个新的Excel文件,例如: ```java String fileName = "path/to/excel.xlsx"; EasyExcel.write(fileName).sheet("Sheet1").doWrite(dataList); ``` 其中,`dataList`是要写入Excel的数据列表。 3. 读取Excel文件:使用EasyExcel提供的API,可以读取已有的Excel文件,例如: ```java String fileName = "path/to/excel.xlsx"; EasyExcel.read(fileName, DemoData.class, new DemoDataListener()).sheet().doRead(); ``` 其中,`DemoData`是自定义数据模型类,`DemoDataListener`是一个实现了`AnalysisEventListener`接口的监听器类,用于处理读取到的数据。 4. 导入导出数据:使用EasyExcel提供的API,可以方便地进行数据的导入和导出操作,例如: ```java // 导入数据 EasyExcel.read(file.getInputStream(), DemoData.class, new DemoDataListener()).sheet().doRead(); // 导出数据 String fileName = "path/to/excel.xlsx"; EasyExcel.write(fileName, DemoData.class).sheet("Sheet1").doWrite(dataList); ``` 其中,`file`是上传的Excel文件,`dataList`是要导出数据列表。 以上是使用EasyExcel的基本步骤,你可以根据具体需求进行更多的操作和配置。如果你有更详细的问题,可以继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值