gpt4 book ai didi

java - Redshift 的分隔符转义边缘情况

转载 作者:行者123 更新时间:2023-11-30 07:21:29 25 4
gpt4 key购买 nike

在我的应用程序中,我获取一些事件,将它们写入日志文件,然后将它们写入 redshift。下面的文件显示了三种情况。在一种情况下,一切正常,没有使用管道。第二个用例有一个管道,但它逃逸得很好。然而,第三种情况有点棘手。 Event.x=Hi\| ,这意味着转义它会产生 Hi\\| ,我不知道Redshift会如何解释这一点。它会 a) 将其解释为转义反斜杠,并将管道解释为常规分隔符(不好)吗?或者 b) 只查看管道之前的反斜杠,并且仍然逃逸管道(好)?

In my Java code   ;Logfile Text  ;Redshift columns     ;Works
--------------------------------------------------------------
Event.x ;Event.y ;Logfile Text ;Column X ;Column Y ;Works
--------------------------------------------------------------
Hi ;10 ;Hi|10 ;Hi ;10 ;Yes
--------------------------------------------------------------
Hi| ;10 ;Hi\||10 ;Hi| ;10 ;Yes
--------------------------------------------------------------
Hi\| ;10 ;Hi\\||10 ;??? ;??? ;???

这是我当前用于转义和加入属性的代码。假设attributesList<String> .

String log = attributes.stream()
.map(s -> s.replace("|", "\\|")) // Escape existing delimiters
.collect(Collectors.joining("|")); // Join on pipes

最佳答案

需要转义转义,转义管道:"\|"->“\\\|”

例如

.map(s -> s.replace("\\", "\\\\"))  // Escape escapes
.map(s -> s.replace("|", "\\|")) // Escape existing delimiters

来自redshift docs :

COPY loads \n as a newline character and loads \t as a tab character. To load a backslash, escape it with a backslash ( \ ).

关于java - Redshift 的分隔符转义边缘情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37493719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com