From bfc18b338ede999af0575eca2ea83a6ff85b83c3 Mon Sep 17 00:00:00 2001 From: fit2cloud-zhunaixu Date: Mon, 21 Oct 2024 16:52:17 +0800 Subject: [PATCH] =?UTF-8?q?fix=20:=20=E4=BF=AE=E5=A4=8DOracle=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E7=9A=84CLOB=E7=B1=BB=E5=9E=8B=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E6=97=B6=E4=B8=8D=E6=98=BE=E7=A4=BA=E5=8E=9F?= =?UTF-8?q?=E6=9C=89=E7=9A=84=E6=96=87=E6=9C=AC=E5=80=BC=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../framework/console/dataview/DataView.java | 8 ++++++++ .../chen/framework/utils/CodeUtils.java | 20 +++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 backend/framework/src/main/java/org/jumpserver/chen/framework/utils/CodeUtils.java diff --git a/backend/framework/src/main/java/org/jumpserver/chen/framework/console/dataview/DataView.java b/backend/framework/src/main/java/org/jumpserver/chen/framework/console/dataview/DataView.java index 8a3e774..890d427 100644 --- a/backend/framework/src/main/java/org/jumpserver/chen/framework/console/dataview/DataView.java +++ b/backend/framework/src/main/java/org/jumpserver/chen/framework/console/dataview/DataView.java @@ -12,11 +12,13 @@ import org.jumpserver.chen.framework.datasource.sql.SQLQueryResult; import org.jumpserver.chen.framework.jms.entity.CommandRecord; import org.jumpserver.chen.framework.session.SessionManager; +import org.jumpserver.chen.framework.utils.CodeUtils; import org.jumpserver.chen.framework.ws.io.PacketIO; import java.io.BufferedWriter; import java.io.IOException; import java.nio.file.Files; +import java.sql.Clob; import java.sql.SQLException; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @@ -164,6 +166,9 @@ public void export(String scope) throws SQLException { if (row.get(field.getName()) == null) { writer.write("NULL"); writer.write(","); + } else if (row.get(field.getName()) instanceof Clob clob) { + writer.write(CodeUtils.escapeCsvValue(clob.getSubString(1, (int) clob.length()))); + writer.write(","); } else { writeString(writer, row.get(field.getName())); writer.write(","); @@ -190,6 +195,9 @@ public void export(String scope) throws SQLException { if (o == null) { writer.write("NULL"); writer.write(","); + } else if (o instanceof Clob clob) { + writer.write(CodeUtils.escapeCsvValue(clob.getSubString(1, (int) clob.length()))); + writer.write(","); } else { writer.write(o.toString()); writer.write(","); diff --git a/backend/framework/src/main/java/org/jumpserver/chen/framework/utils/CodeUtils.java b/backend/framework/src/main/java/org/jumpserver/chen/framework/utils/CodeUtils.java new file mode 100644 index 0000000..f462447 --- /dev/null +++ b/backend/framework/src/main/java/org/jumpserver/chen/framework/utils/CodeUtils.java @@ -0,0 +1,20 @@ +package org.jumpserver.chen.framework.utils; + + +public class CodeUtils { + + /** + * 对导出文件的换行符进行转义 + * @param value + * @return + */ + public static String escapeCsvValue(String value) { + if (value.contains("\"") || value.contains(",") || value.contains("\n")) { + // 对引号进行转义 + value = value.replace("\"", "\"\""); + // 用引号包围值 + value = "\"" + value + "\""; + } + return value; + } +}