幫公司做網(wǎng)站商丘網(wǎng)站seo
文章目錄
- 創(chuàng)建數(shù)據(jù)表
- 1. 創(chuàng)建數(shù)據(jù)表全流程
- 2. 核心:創(chuàng)建table
- 3. 在已有的數(shù)據(jù)表中追加新的數(shù)據(jù)
- 數(shù)據(jù)表自身的操作
- 1. 查詢有哪些數(shù)據(jù)表
- 2. 刪除某張數(shù)據(jù)表
- 3. 修改數(shù)據(jù)表的名稱
博客里只介紹最常見(jiàn)的分區(qū)表(createPartitionedTable)的創(chuàng)建方法,更多自定義的操作請(qǐng)參考:https://github.com/dolphindb/Tutorials_CN/blob/master/partitioned_in_memory_table.md
數(shù)據(jù)表支持的數(shù)據(jù)類型請(qǐng)查看:https://docs.dolphindb.cn/zh/help/200/DataTypesandStructures/DataTypes/index.html
創(chuàng)建數(shù)據(jù)表
1. 創(chuàng)建數(shù)據(jù)表全流程
DolphinDB從創(chuàng)建數(shù)據(jù)庫(kù)到使用數(shù)據(jù)表有下面幾個(gè)流程:
-
創(chuàng)建數(shù)據(jù)庫(kù):
db=database(dbPath, VALUE, 2000.01M..2001.12M)
-
創(chuàng)建一個(gè)數(shù)據(jù)表(也叫內(nèi)存表):
// 生成一個(gè)隨機(jī)的內(nèi)存表數(shù)據(jù),這是第一種構(gòu)造數(shù)據(jù)表的習(xí)慣 randomN=5month=take(2020.01M..2023.12M, randomN) x=rand(1.0, randomN) // 生成隨機(jī)數(shù)myTable=table(month, x) // 先構(gòu)造好數(shù)據(jù),再拼到數(shù)據(jù)表中select * from myTable
得到如下表:
- 基于
db
數(shù)據(jù)庫(kù)創(chuàng)建一個(gè)分布式數(shù)據(jù)表,參考內(nèi)存表myTable
的格式,分區(qū)的依據(jù)是數(shù)據(jù)中的month
列:
myPartitionedTable = db.createPartitionedTable(myTable, `DBTable, `month)
- 基于
-
將原來(lái)的內(nèi)存表的數(shù)據(jù)表遷移到分布式數(shù)據(jù)表中
myPartitionedTable.append!(myTable)
這樣才算從數(shù)據(jù)庫(kù)中添加完成一個(gè)數(shù)據(jù)表,可以查詢一下分布式數(shù)據(jù)表的內(nèi)容:
select * from myPartitionedTable;
完整示例如下:
dbPath = "dfs://MyTestDB"
if (existsDatabase(dbPath)){ // 判斷數(shù)據(jù)庫(kù)是否存在dropDatabase(dbPath) // 刪除數(shù)據(jù)庫(kù)
}db=database(dbPath, VALUE, 2000.01M..2001.12M)// 生成一個(gè)隨機(jī)的內(nèi)存表數(shù)據(jù)
randomN=5
month=take(2020.01M..2023.12M, randomN)
x=rand(1.0, randomN) // 生成隨機(jī)數(shù)
myTable=table(month, x)// 創(chuàng)建表
myPartitionedTable = db.createPartitionedTable(t, `DBTable, `month)// 追加寫入表數(shù)據(jù)
myPartitionedTable.append!(myTable)select * from myPartitionedTable;
總的來(lái)說(shuō)創(chuàng)建一個(gè)數(shù)據(jù)表的總流程就是:
- 有一個(gè)數(shù)據(jù)庫(kù)
- 有一個(gè)想要保存的數(shù)據(jù)表
someTable
- 參考數(shù)據(jù)表
someTable
的格式,使用數(shù)據(jù)庫(kù).createPartitionedTable()創(chuàng)建一個(gè)數(shù)據(jù)表,叫有數(shù)據(jù)庫(kù)罩著的someTable
- 把
someTable
的數(shù)據(jù)遷移到創(chuàng)建到有數(shù)據(jù)庫(kù)罩著的someTable
數(shù)據(jù)表里 - 之后所有外部訪問(wèn)數(shù)據(jù)庫(kù)就是使用這個(gè)
有數(shù)據(jù)庫(kù)罩著的someTable
,原始的someTable
會(huì)在會(huì)話斷開(kāi)后消失在內(nèi)存里
2. 核心:創(chuàng)建table
這個(gè)table的創(chuàng)建博主常用的構(gòu)造方法是:
// 這是第二種構(gòu)造數(shù)據(jù)表的習(xí)慣,也是博主最常用的方法table(1..5 as index, // 注意1:第一行數(shù)據(jù)要與 "table(" 在同一行2..6 as x,3..7 as y,4..8 as z // 注意2:最后一行結(jié)尾不能有逗號(hào)",")
這里有幾個(gè)要點(diǎn):
- 第一行數(shù)據(jù)要與 “table(” 在同一行
- 最后一行結(jié)尾不能有逗號(hào)","
得到的結(jié)果:
3. 在已有的數(shù)據(jù)表中追加新的數(shù)據(jù)
上面的例子中myPartitionedTable.append!(myTable)
就是把myTable
中的數(shù)據(jù)追加到myPartitionedTable
中,而在一個(gè)已有數(shù)據(jù)表的基礎(chǔ)上添加數(shù)據(jù)有三個(gè)步驟:
- 從數(shù)據(jù)庫(kù)中拿到想要追加的那個(gè)表
- 把待追加的外部的數(shù)據(jù)源,轉(zhuǎn)換為內(nèi)存表table
- 使用
數(shù)據(jù)庫(kù)中的表.append!(外部數(shù)據(jù)table)
把外部數(shù)據(jù)追加到原始數(shù)據(jù)表中
因此在已有的數(shù)據(jù)表中追加數(shù)據(jù)
// 步驟1:拿到數(shù)據(jù)庫(kù)中的那個(gè)表
db = database("dfs://MyTestDB")
myPartitionedTable = loadTable(db,`DBTable)// 步驟2:新增數(shù)據(jù)轉(zhuǎn)換為內(nèi)存表table,博主這里就創(chuàng)建新的table表作為要追加的數(shù)據(jù)
append_table = table(1..5 as index,2..6 as x,3..7 as y,4..8 as z)// 步驟3:用.append!() 追加進(jìn)去
myPartitionedTable.append!(append_table)
這樣就算添加完成啦
數(shù)據(jù)表自身的操作
1. 查詢有哪些數(shù)據(jù)表
對(duì)于一個(gè)已有的數(shù)據(jù)庫(kù):dfs://myDB
,查詢數(shù)據(jù)表里的表有以下兩種方法
getDFSTablesByDatabase("dfs://myDB") // 查詢某個(gè)分布式數(shù)據(jù)庫(kù)中的表
或使用:
getTables(database("dfs://myDB"))
2. 刪除某張數(shù)據(jù)表
比如刪除數(shù)據(jù)庫(kù)dfs://myDB
的某張數(shù)據(jù)表someTable
db=database("dfs://myDB")
dropTable(db,"someTable");
3. 修改數(shù)據(jù)表的名稱
比如修改數(shù)據(jù)庫(kù)dfs://myDB
的某張數(shù)據(jù)表someTable
,改名為newSomeTable
db = database("dfs://myDB")
renameTable(db, "someTable", "newSomeTable")
select * from db.newSomeTable