在我的应用程序中,我接受一些事件,将它们写入日志文件,然后将它们写入redshift。下面的文件显示了三种情况。在一种情况下,一切正常,没有使用管道。第二个用例有一个管道,但它很好地逃脱了。但是,第三种情况有点诡计。 if x < 8:
if matrix[x+1][y+1] != 0 and matrix[x+2][y-2] == 0: #up + right
. . .
,这意味着逃避它会产生Event.x=Hi\|
,我不知道Redshift将如何解释这一点。它会a)将其解释为转义反斜杠,并将管道解释为常规分隔符(坏)?或者b)只看管道前的反斜线并仍然逃脱管道(好)?
Hi\\|
这是我目前转义和加入属性的代码。假设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 ;??? ;??? ;???
是attributes
。
List<String>
答案 0 :(得分:1)
您需要逃离逃生并逃离管道:"\|" -> "\\\|"
e.g。
.map(s -> s.replace("\\", "\\\\")) // Escape escapes
.map(s -> s.replace("|", "\\|")) // Escape existing delimiters
COPY加载\ n作为换行符并将\ t加载为制表符。 要加载反斜杠,请使用反斜杠(\)对其进行转义。