SequoiaDB的事務開啟和匯出 匯入資料

2021-09-11 17:58:31 字數 2667 閱讀 7968

首先在sdbadmin使用者下,bin/sdbstop -p 11830; bin/sdbstop -p 11840把每個伺服器的兩個資料分割槽組關閉

分別進入conf/local/11830/sdb.confconf/local/11840/sdb.conf將transactionon=false改為true

若不知道怎麼配置conf檔案,可以去conf/samples檢視各個引數參考檔案

重啟兩個資料分割槽組埠bin/sdbstart -p 11830; bin/sdbstart -p 11840

如果未開啟事務功能,在命令列中執行開啟事務正常,但是crud操作時失敗,返回碼-253

命令列

嘗試使用事務插入記錄

db = new sdb()

db.transbegin()

db.foo.bar.insert()

成功,提交事務

db.transcommit()

db.transbegin()

db.foo.bar.insert()

db.transrollback()

事務回滾成功,插入無效

而且,如果事務沒有最終提交,退出shell的時候,也會插入無效

跨表事務

node-1:

db = new sdb()

db.transbegin()

db.foo.bar.update()

node-2:

db = new sdb()

db.transbegin()

db.foo.bar.update()

此時命令行會定住,因為此時有其他事務還沒提交

node-1:

db.transcommit()

node-2:

此時update語句可以正常執行了,因為node-1的事務提交成功了

此時id=1的name=test222

db.transrollback()

此時id=1的name=test111

命令列

bin/sdbexprt

引數

命令列演示

bin/sdbexprt --genconf export.conf --cscl "foo.bar, test.bar2" --type csv --dir tmp生成配置檔案,使用配置檔案而生成的檔案存放到tmp目錄

bin/sdbexprt --conf export.conf根據配置檔案,輸出集合記錄到tmp目錄

準備好結構檔案 tmp/test.csv

bin/sdbimprt -c foo -l bar --file tmp/test.csv --fields "name string, id int" --headerline true將tmp/test.csv匯入到foo.bar中,字段分別為name,string型別,id,int型別。且檔案中的第一行屬於表的結構,應該忽略。

匯入成功後,可以看當前目錄下的sdbimport.log看看有沒有異常、error

若匯入過程中,有某些行匯入失敗的話,會在當前目錄下產生乙個檔案,名為:[集合空間名]_[集合名]_parse_[程序埠號].rec,其中存放著匯入失敗的行的資料

批量匯入資料:比如tmp/data/目錄下有多個csv檔案,此時可以bin/sdbimprt -c foo -l bar --file tmp/data/ --fields "name string, id int" --headerline true

名場景:當檔案中的分隔符,為不可見符號(亂碼),怎麼辦

tail -3 test.csv | od -an -t dc輸出檔案最後三行資料的10進製ascii碼

根據字段值對應的ascii碼,可以找出剩下的就是字段分隔符和記錄分隔符

bin/sdbimprt -c foo -l bar --file tmp/test.csv --fields "name string, id int" --headerline false -e "\127\27" -r "\27\10"

檔案中,有些記錄會多出來幾個字段,有些則沒有,怎麼辦,想忽略某個字段匯入呢?

test1,1

test2,2

test,3,12312312312

開啟–extra true設定欄位名,預設值,若一行記錄沒有這個字段,就會使用預設值

在不需要的字段後面新增 skip,即可忽略該欄位

例:bin/sdbimprt -c foo -l bar --file tmp/test.csv --fields "name string, id skip, phone string defaut 12345567" --headerline false -e "," -r"\n" --extra true

事務的開啟和提交

顯然,這個程式非常簡單,我們非常自信地編譯它,但是,出乎意料的結果使我們的成就感頓時煙消雲散 error cs1501 過載 sqltransaction 方法未獲取 0 引數 是什麼原因呢?注意到我們初始化的 sqltransaction mytran new sqltransaction 顯然,...

SequoiaDB巨杉資料庫 事務快照

sdb snap transactions 事務快照列出正在進行的事務資訊。每乙個資料節點上正在進行的每乙個事務為一條記錄。欄位名型別 描述nodename 字串節點名 主機名 服務名 sessionid 長整型會話 id transactionid 字串事務 id isrollback 布林型事務...

手動開啟事務和事務的ACID特徵與使用

事務預設提交被開啟 autocommit 1 後,此時不能使用事務回滾,但我們可手動開啟乙個事務處理事件,這樣就可以發生回滾。使用begin 或者star transaction 手動開啟乙個事務 begin update user set money money 100where name a u...