tableInsert / insert into
This section explains how to insert data using DolphinDB's tableInsert
function and the insert into
statement with Java API. This synchronized
write method supports both single and batch writes.
Writing to In-Memory Tables
DolphinDB offers several ways to write to an in-memory table:
- Insert a single row of data with
insert into
- Insert multiple rows of data in bulk with function
tableInsert
- Insert a table object with function
tableInsert
It is not recommended to save data with function append!
, as
append!
returns the schema of a table and unnecessarily
increases the network traffic.
The table in the following examples has 4 columns. Their data types are STRING, INT, TIMESTAMP and DOUBLE. The column names are cstring, cint, ctimestamp and cdouble, respectively.
t = table(10000:0,`cstring`cint`ctimestamp`cdouble,[STRING,INT,TIMESTAMP,DOUBLE]) share t as sharedTable
By default, an in-memory table is not shared
among sessions. To access it in a different session, share it among sessions with
share
.
Insert a Single Record with insert
into
To insert a single record to a DolphinDB in-memory
table, you can use the insert into
statement.
Insert Multiple Records with tableInsert
Function tableInsert
can save records in batches. If data in Java
can be organized as a List, it can be saved with function
tableInsert
.
public void test_save_TableInsert(List<String> strArray,List<Integer> intArray,List<Long> tsArray,List<Double> dblArray) throws IOException{
//Construct parameters with arrays
List<Entity> args = Arrays.asList(new BasicStringVector(strArray),new BasicIntVector(intArray),new BasicTimestampVector(tsArray),new BasicDoubleVector(dblArray));
conn.run("tableInsert{sharedTable}", args);
}
The example above uses partial application in DolphinDB to embed a table in
tableInsert{sharedTable}
as a function.
Save BasicTable Objects With Function tableInsert
Function tableInsert
can also accept a BasicTable object in Java as
a parameter to append data to a table in batches.
public void test_save_table(BasicTable table1) throws IOException {
List<Entity> args = Arrays.asList(table1);
conn.run("tableInsert{shareTable}", args);
}
Write to DFS Tables
DFS table is recommended by DolphinDB in production environment. It supports snapshot isolation and ensures data consistency. With data replication, DFS tables offers fault tolerance and load balancing.
Save BasicTable Objects With Function tableInsert
dbPath = 'dfs://testDatabase' tbName = 'tb1' if(existsDatabase(dbPath)){dropDatabase(dbPath)} db = database(dbPath,RANGE,2018.01.01..2018.12.31) db.createPartitionedTable(t,tbName,'ctimestamp')
DolphinDB provides loadTable
method to load DFS tables and
tableInsert
method to append data.
public void test_save_table(String dbPath, BasicTable table1) throws IOException{ List<Entity> args = new ArrayList<Entity>(1); args.add(table1); conn.run(String.format("tableInsert{loadTable('%s','tb1')}",dbPath), args); }