public void createPartitionedTableAppender() { IDBConnectionPool pool = new ExclusiveDBConnectionPool("192.168.1.37", 8848, "admin", "123456", 5, true, true); IDBTask conn = new BasicDBTask("dbPath = \"dfs://demohash\";if(existsDatabase(dbPath)) dropDatabase(dbPath); db = database(dbPath, HASH,[STRING, 2]);t= table(100:0,`id`valuie,[STRING,INT]);pt=db.createPartitionedTable(t,`pt,`id);"); pool.execute(conn); PartitionedTableAppender appender = new PartitionedTableAppender("dfs://demohash", "pt", "id", pool); List <String> colNames = new List <String>(2); colNames.Add("id"); colNames.Add("value"); List <IVector> cols = new List <IVector>(2); BasicStringVector id = new BasicStringVector(3); id.setString(0, "ORCA"); id.setString(1, "YHOO"); id.setString(2, "Ford"); cols.Add(id); BasicIntVector value = new BasicIntVector(3); value.setInt(0, 10); value.setInt(1, 11); value.setInt(2, 12); cols.Add(value); int res = appender.append(new BasicTable(colNames, cols)); Assert.AreEqual(3, res); }
public void Test_execute() { ExclusiveDBConnectionPool pool = new ExclusiveDBConnectionPool(SERVER, PORT, USER, PASSWORD, 20, true, true); List <IDBTask> tasks = new List <IDBTask>(20); for (int i = 0; i < 20; i++) { BasicDBTask task = new BasicDBTask("table(1 2 3 as id, 4 5 6 as value);"); tasks.Add(task); } pool.execute(tasks); for (int i = 0; i < 20; i++) { bool flag = tasks[i].isSuccessful(); } }
public PartitionedTableAppender(string dbUrl, string tableName, string partitionColName, string appendFunction, IDBConnectionPool pool) { this.pool = pool; threadCount = pool.getConnectionCount(); chunkIndices = new List <List <int> >(threadCount); for (int i = 0; i < threadCount; ++i) { chunkIndices.Add(new List <int>()); } DBConnection conn = new DBConnection(); IEntity partitionSchema; BasicTable colDefs; BasicIntVector typeInts; int partitionType; DATA_TYPE partitionColType; try { IDBTask task; if (dbUrl == null || dbUrl.Length == 0) { task = new BasicDBTask("schema(" + tableName + ")"); appendScript = "tableInsert{" + tableName + "}"; } else { task = new BasicDBTask("schema(loadTable(\"" + dbUrl + "\", \"" + tableName + "\"))"); appendScript = "tableInsert{loadTable('" + dbUrl + "', '" + tableName + "')}"; } if (appendFunction != null && appendFunction.Length != 0) { appendScript = appendFunction; } pool.execute(task); if (!task.isSuccessful()) { throw new Exception(task.getErrorMsg()); } tableInfo = (BasicDictionary)task.getResults(); IEntity partColNames = tableInfo.get(new BasicString("partitionColumnName")); if (partColNames == null) { throw new Exception("Can't find specified partition column name."); } if (partColNames.isScalar()) { if (!((BasicString)partColNames).getString().Equals(partitionColName, StringComparison.OrdinalIgnoreCase)) { throw new Exception("Can't find specified partition column name."); } partitionColumnIdx = ((BasicInt)tableInfo.get(new BasicString("partitionColumnIndex"))).getValue(); partitionSchema = tableInfo.get(new BasicString("partitionSchema")); partitionType = ((BasicInt)tableInfo.get(new BasicString("partitionType"))).getValue(); // partitionColType = (DATA_TYPE)((BasicInt)tableInfo.get(new BasicString("partitionColumnType"))).getValue(); } else { BasicStringVector vec = (BasicStringVector)partColNames; int dims = vec.rows(); int index = -1; for (int i = 0; i < dims; ++i) { if (!vec.getString(i).Equals(partitionColName, StringComparison.OrdinalIgnoreCase)) { index = i; break; } } if (index < 0) { throw new Exception("Can't find specified partition column name."); } partitionColumnIdx = ((BasicIntVector)tableInfo.get(new BasicString("partitionColumnIndex"))).getInt(index); partitionSchema = ((BasicAnyVector)tableInfo.get(new BasicString("partitionSchema"))).getEntity(index); partitionType = ((BasicIntVector)tableInfo.get(new BasicString("partitionType"))).getInt(index); // partitionColType = (DATA_TYPE)((BasicIntVector)tableInfo.get(new BasicString("partitionColumnType"))).getInt(index); } colDefs = ((BasicTable)tableInfo.get(new BasicString("colDefs"))); this.cols = colDefs.getColumn(0).rows(); typeInts = (BasicIntVector)colDefs.getColumn("typeInt"); this.columnCategories = new DATA_CATEGORY[this.cols]; this.columnTypes = new DATA_TYPE[this.cols]; for (int i = 0; i < cols; ++i) { this.columnTypes[i] = (DATA_TYPE)typeInts.getInt(i); this.columnCategories[i] = Utils.typeToCategory(this.columnTypes[i]); } domain = DomainFactory.createDomain((PARTITION_TYPE)partitionType, partitionColType, partitionSchema); } catch (Exception e) { throw e; } finally { conn.close(); } }