Skip to content

Commit f6da3e8

Browse files
authored
Merge pull request #59 from jumpserver/dev
v4.4.0
2 parents cba4107 + b5ad47a commit f6da3e8

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

backend/framework/src/main/java/org/jumpserver/chen/framework/console/dataview/DataView.java

+8
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,13 @@
1212
import org.jumpserver.chen.framework.datasource.sql.SQLQueryResult;
1313
import org.jumpserver.chen.framework.jms.entity.CommandRecord;
1414
import org.jumpserver.chen.framework.session.SessionManager;
15+
import org.jumpserver.chen.framework.utils.CodeUtils;
1516
import org.jumpserver.chen.framework.ws.io.PacketIO;
1617

1718
import java.io.BufferedWriter;
1819
import java.io.IOException;
1920
import java.nio.file.Files;
21+
import java.sql.Clob;
2022
import java.sql.SQLException;
2123
import java.time.LocalDateTime;
2224
import java.time.format.DateTimeFormatter;
@@ -164,6 +166,9 @@ public void export(String scope) throws SQLException {
164166
if (row.get(field.getName()) == null) {
165167
writer.write("NULL");
166168
writer.write(",");
169+
} else if (row.get(field.getName()) instanceof Clob clob) {
170+
writer.write(CodeUtils.escapeCsvValue(clob.getSubString(1, (int) clob.length())));
171+
writer.write(",");
167172
} else {
168173
writeString(writer, row.get(field.getName()));
169174
writer.write(",");
@@ -190,6 +195,9 @@ public void export(String scope) throws SQLException {
190195
if (o == null) {
191196
writer.write("NULL");
192197
writer.write(",");
198+
} else if (o instanceof Clob clob) {
199+
writer.write(CodeUtils.escapeCsvValue(clob.getSubString(1, (int) clob.length())));
200+
writer.write(",");
193201
} else {
194202
writer.write(o.toString());
195203
writer.write(",");
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package org.jumpserver.chen.framework.utils;
2+
3+
4+
public class CodeUtils {
5+
6+
/**
7+
* 对导出文件的换行符进行转义
8+
* @param value
9+
* @return
10+
*/
11+
public static String escapeCsvValue(String value) {
12+
if (value.contains("\"") || value.contains(",") || value.contains("\n")) {
13+
// 对引号进行转义
14+
value = value.replace("\"", "\"\"");
15+
// 用引号包围值
16+
value = "\"" + value + "\"";
17+
}
18+
return value;
19+
}
20+
}

0 commit comments

Comments
 (0)