首先在sdbadmin使用者下,bin/sdbstop -p 11830; bin/sdbstop -p 11840
把每個伺服器的兩個資料分割槽組關閉
分別進入conf/local/11830/sdb.conf
和conf/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開啟–extra true設定欄位名,預設值,若一行記錄沒有這個字段,就會使用預設值test2,2
test,3,12312312312
在不需要的字段後面新增 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...