0

在 GFSH 中,我想运行一个 put 命令来创建一个键和值,其中包含一组类似 PDX 的值......例如:

put --key=('test1') --value=('Client':'XYZ', 'MsgType':'R', 'OrdType':'C', 'SecurityType':'FOR', 'Symbol':'EUR/USD', 'QuoteReqId':'test1', 'OrderQty':'100000', 'OrderQty2':'0', 'Reference1':'GFSH Test', 'StreamingQuoteDuration':'30', 'FutSettDate':'20200102', 'Currency':'EUR') --region=/myRegion

这是返回错误

您不能指定 ':'R'、'OrdType':'C'、'SecurityType':'FOR'、'Symbol':'EUR/USD'、'QuoteReqId':'test1'、'OrderQty':'100000' , 'OrderQty2':'0', 'Reference1':'GFSH Test', 'StreamingQuoteDuration' :'30', 'FutSettDate':'20200102', 'Currency':'EUR')' 作为默认值 ( '') 单个命令中的选项。您之前已经提供了“MsgType”。您是否忘记在另一个选项的值周围添加引号?

4

2 回答 2

1

您基本上需要从value选项中删除所有空格,一旦您这样做,一切都会正常工作:

gfsh>put --key=('test1') --value=('Client':'XYZ','MsgType':'R','OrdType':'C','SecurityType':'FOR','Symbol':'EUR/USD','QuoteReqId':'test1','OrderQty':'100000','OrderQty2':'0','Reference1':'GFSHTest','StreamingQuoteDuration':'30','FutSettDate':'20200102','Currency':'EUR') --region=/myRegion
Result      : true
Key Class   : java.lang.String
Key         : {'test1'}
Value Class : java.lang.String
Old Value   : null


gfsh>query --query="SELECT * FROM /myRegion"
Result : true
Limit  : 100
Rows   : 1




Result
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
{'Client':'XYZ','MsgType':'R','OrdType':'C','SecurityType':'FOR','Symbol':'EUR/USD','QuoteReqId':'test1','OrderQty':'100000','OrderQty2':'0','Reference1':'GFSHTest','StreamingQuoteDuration':'30','FutSettDate':'20200102','Currency':'EUR'}

干杯。

于 2019-10-30T09:05:27.783 回答
0

我在上面尝试了@Juan Ramos 的答案,但效果不佳。空格不是问题 - 使初始 put 起作用的原因是在括号中的值字符串周围添加双引号:

put --key=('test1') --value="('Client':'XYZ', 'MsgType':'R', 'OrdType':'C', 'SecurityType':'FOR', 'Symbol':'EUR/USD', 'QuoteReqId':'test1', 'OrderQty':'100000', 'OrderQty2':'0', 'Reference1':'GFSH Test', 'StreamingQuoteDuration':'30', 'FutSettDate':'20200102', 'Currency':'EUR')" --region=/myRegion

这仍然会在该区域中放置一个字符串,并且不会对数据进行 PDX 表示。

于 2019-11-19T18:35:18.027 回答