1. 程式人生 > 程式設計 >Influx Sql系列教程六:insert 修改資料

Influx Sql系列教程六:insert 修改資料

在influxdb中沒有專門的修改資料的update語句,對於influxdb而言,如果想修改資料,還是得使用我們前面的說到的insert來實現,那麼怎麼判斷一條insert語句是插入還是修改呢?

1. insert資料修改

關於insert的使用語法,可以參考上一篇博文:190726-Influx Sql系列教程五:insert 新增資料

這裡只是貼一下基本語法

insert into <retention policy> measurement,tagKey=tagValue fieldKey=fieldValue timestamp
複製程式碼

如果我們希望修改一條資料,比如修改既有的field,或者增加/刪除field時,我們需要指定具體的時間戳和tag

下面是一個簡單的修改演示

> select * from add_test where time=1564149327925320596
name: add_test
time                age boy email            name  phone user_id
----                --- --- -----            ----  ----- -------
1564149327925320596         [email protected] YiHui 110   20
> show tag keys from add_test
name: add_test
tagKey
------
name
phone
> insert add_test,name=YiHui,phone=110 user_id=20,email="[email protected]"
,boy=true,age=18i 1564149327925320596 > select * from add_test where time=1564149327925320596 name: add_test time age boy email name phone user_id ---- --- --- ----- ---- ----- ------- 1564149327925320596 18 true [email protected] YiHui 110 20 複製程式碼

在上面的case中,我們執行的的insert語句來修改某條已有的記錄時,有幾個引數必須存在

  • time: 指定為要要改記錄的時間戳
  • tag: 所有的tag都必須和要修改的資料一致 name=YiHui,phone=110

然後field的內容,會增量修改之前的資料,如下

> insert add_test,phone=110 boy=true,age=19i 1564149327925320596
> select * from add_test where time=1564149327925320596
name: add_test
time                age boy  email            name  phone user_id
----                --- ---  -----            ----  ----- -------
1564149327925320596 19  true [email protected] YiHui 110   20
複製程式碼

通過上面的insert,可以動態新增field,但是如果我希望刪除field怎麼辦?

  • 目前提供的influxdb sql中沒有找到刪除field的方式,一個可供選擇的方式就是把原來的記錄刪掉;然後再重新插入一條

如果需要修改tag怎麼辦?

  • 前面的case已經表明,修改記錄是根據 time + tag values來唯一定位記錄,然後執行刪除的,如果你需要修改一個tag,對insert語句而言就是新增了一個point;這個時候可以考慮由自己來刪除舊的資料

II. 其他

0. 系列博文

參考博文

1. 一灰灰Blogliuyueyi.github.io/hexblog

一灰灰的個人部落格,記錄所有學習和工作中的博文,歡迎大家前去逛逛

2. 宣告

盡信書則不如,已上內容,純屬一家之言,因個人能力有限,難免有疏漏和錯誤之處,如發現bug或者有更好的建議,歡迎批評指正,不吝感激

3. 掃描關注

一灰灰blog

image