iT邦幫忙

0

關於插入資料到 PostgreSQL 的 json[] 和 jsonb[]

你好,我目前使用的是 PostgreSQL 9.4 beta1 版,我想請問關於 json[] 和 jsonb[]
這兩種 json 陣列新增方式。

我的有兩筆 json 資料如下

{"ItemName":"伺服馬達","Spec":"3000rpm","Price":26000},
{"ItemName":"電池","Spec":"2000mAh","Price":500}

我透過下面的 sql指令 , 建立資料表並 插入資料

create table SaleOrder
(
  OrderDetail jsonb[]
)


insert into SalesOrder 
(
  OrderDetail
) values 
(
 '[{"ItemName":"伺服馬達","Spec":"","Price":26000},{"ItemName":"電池","Spec":"2000mAh","Price":500}]',
)

卻會發生以下錯誤訊息:

ERROR: missing dimension value
LINE 18: '[{"ItemName":"伺服馬達","Spec":"","Price":26000},{"ItemNam...
^

********** Error **********

ERROR: missing dimension value
SQL state: 22P02
Character: 398

另外我想請問的是 , jsonb[] 和 json[] 的插入新資料和更新資料的方式是否相同?

有人知道問題出在哪嗎?
感謝回覆。

1 個回答

0
丁丁 (Dean)
iT邦大師 6 級 ‧ 2014-06-19 18:13:43

參考這篇
What can you do with PostgreSQL and JSON?
請將你的 json 改成單筆 insert
看來有點像是 multi-insert 的問題~

OK, 我試出來了

<pre class="c" name="code">
    INSERT INTO SaleOrder     
    (  
      OrderDetail  
    ) values   
    (  
     ARRAY[
     '[{"ItemName":"伺服馬達","Spec":"","Price":26000},{"ItemName":"電池","Spec":"2000mAh","Price":500}]'::json
     ]
    )  

問題有3

  1. 你宣告了 JSON[], 你沒用 ARRAY[] 包
  2. 你宣告了 JSON[], 你沒用 ::json 告知其為 json datatype
  3. 你最後面多了個 ,

我要發表回答

立即登入回答