Netezza

Netezza 錯誤記錄大小 120000 超出了 65535 字節的內部限制

  • June 27, 2015

我有一列 PARAM,其中包含如下所示的 JSON 數據:

JSON:{"Name":"RES_InformationalIssues","StepName":"Page_1","StepData":"f601e9fe-d68a-4ed7-bbaa-f40c9cbc4d12=General Product Information","SessionId":"ab04f2c4-ddge-4555-c792-01d9518e7148"}

我希望有多個列(名稱、StepName、StepData、SessionID),其中包含它們的數據。

SELECT substr(PARAM, (instr (PARAM , 'Name":"' )+7), (instr(PARAM, 'StepName":"'))-21) as Name, substring(PARAM, (instr (PARAM , 'StepName":"'))+14, (instr(PARAM, 'StepData":"'))-(instr(PARAM, 'StepName":"'))-17) as StepName FROM Table

由於我更改了名稱,因此該查詢無法完全正確地工作,但我認為您明白了。當我對這些列中的任何一個執行查詢時,我得到了我正在尋找的數據。但是當它們像我上面那樣一起執行時,我得到了錯誤:

錯誤

$$ HY000 $$錯誤:記錄大小 120000 超出了 65535 字節的內部限制 感覺這意味著我不應該將 PARAM 的文本指定為列名,但這不是我想要做的。需要任何建議或澄清嗎?

我想函式結果的數據類型與列本身SUBSTR(PARAM, ...)的長度相同。PARAM由於您的select列表中有兩個,如果 的長度PARAM足夠大,則選擇列表中兩個值的組合長度可能超過某種內部限制。

嘗試將值顯式轉換為較短的數據類型,例如

SELECT 
 cast(
   substr(PARAM, (instr (PARAM , 'Name":"' )+7), (instr(PARAM, 'StepName":"'))-21)
 as varchar (100)) as Name, 
 cast(
   substring(PARAM, (instr (PARAM , 'StepName":"'))+14, (instr(PARAM, 'StepData":"'))-(instr(PARAM, 'StepName":"'))-17) 
 as varchar (100)) as StepName 
FROM Table

引用自:https://dba.stackexchange.com/questions/76870