Hyper API for C++  0.0.17231
Hyper client library for C++ applications
insert_data_into_multiple_tables.cpp

An example of how to create and insert into a multi-table Hyper file with different column types.

#include <iostream>
#include <string>
static const hyperapi::TableDefinition ordersTable{"Orders", // Since the table name is not prefixed with an explicit schema name, the table will reside in the default "public" namespace.
{
}};
static const hyperapi::TableDefinition customerTable{"Customer", // Since the table name is not prefixed with an explicit schema name, the table will reside in the default "public" namespace.
static const hyperapi::TableDefinition productTable{"Products", // Since the table name is not prefixed with an explicit schema name, the table will reside in the default "public" namespace.
{
}};
static const hyperapi::TableDefinition lineItemsTable{"Line Items", // Since the table name is not prefixed with an explicit schema name, the table will reside in the default "public" namespace.
{
}};
static void runInsertDataIntoMultipleTables() {
std::cout << "EXAMPLE - Insert data into multiple tables within a new Hyper file" << std::endl;
const std::string pathToDatabase = "data/superstore.hyper";
// Starts the Hyper Process with telemetry enabled to send data to Tableau.
// To opt out, simply set telemetry=hyperapi::Telemetry::DoNotSendUsageDataToTableau.
{
// Creates new Hyper file "superstore.hyper"
// Replaces existing file with hyperapi::CreateMode::CreateAndReplace if it already exists.
{
hyperapi::Connection connection(hyper.getEndpoint(), pathToDatabase, hyperapi::CreateMode::CreateAndReplace);
const hyperapi::Catalog& catalog = connection.getCatalog();
// Create multiple tables.
catalog.createTable(ordersTable);
catalog.createTable(customerTable);
catalog.createTable(productTable);
catalog.createTable(lineItemsTable);
// Insert data into Orders table.
{
hyperapi::Inserter inserter(connection, ordersTable);
inserter.addRow(static_cast<int16_t>(399), "DK-13375", hyperapi::Date{2012, 9, 7}, "CA-2011-100006", hyperapi::Date{2012, 9, 13}, "Standard Class");
inserter.addRow(static_cast<int16_t>(530), "EB-13705", hyperapi::Date{2012, 7, 8}, "CA-2011-100090", hyperapi::Date{2012, 7, 12}, "Standard Class");
inserter.execute();
}
// Insert data into Customer table.
{
hyperapi::Inserter inserter(connection, customerTable);
inserter.addRow("DK-13375", "Dennis Kane", 518, "Consumer");
inserter.addRow("EB-13705", "Ed Braxton", 815, "Corporate");
inserter.execute();
}
// Insert individual row into Product table.
{
hyperapi::Inserter inserter(connection, productTable);
inserter.addRow("TEC-PH-10002075", "Technology", "Phones", "AT&T EL51110 DECT");
inserter.execute();
}
// Insert data into Line Items table.
{
hyperapi::Inserter inserter(connection, lineItemsTable);
inserter.addRow(2718, "CA-2011-100006", "TEC-PH-10002075", 377.97, int16_t{3}, 0.0, 109.6113);
inserter.addRow(2719, "CA-2011-100090", "TEC-PH-10002075", 377.97, int16_t{3}, hyperapi::null, 109.6113);
inserter.execute();
}
for (auto& tableName : {ordersTable.getTableName(), customerTable.getTableName(), productTable.getTableName(), lineItemsTable.getTableName()}) {
// `executeScalarQuery` is for executing a query that returns exactly one row with one column.
int64_t rowCount = connection.executeScalarQuery<int64_t>("SELECT COUNT(*) FROM " + tableName.toString());
std::cout << "The number of rows in table " << tableName << " is " << rowCount << "." << std::endl;
}
}
std::cout << "The connection to the Hyper file has been closed." << std::endl;
}
std::cout << "The Hyper Process has been shut down." << std::endl;
}
int main() {
try {
runInsertDataIntoMultipleTables();
} catch (const hyperapi::HyperException& e) {
std::cout << e.toString() << std::endl;
return 1;
}
return 0;
}
hyperapi::Inserter
An inserter.
Definition: Inserter.hpp:24
hyperapi::CreateMode::CreateAndReplace
Create the database. If it already exists, drop the old one first.
hyperapi::Nullable
The column can contain NULL values.
Definition: TableDefinition.hpp:25
hyperapi.hpp
hyperapi::SqlType::smallInt
static SqlType smallInt() noexcept
Returns the SMALL INTEGER SQL type.
Definition: SqlType.hpp:105
hyperapi::Catalog::createTable
void createTable(const hyperapi::TableDefinition &table_definition) const
Creates a SQL table with the given table definition.
hyperapi::HyperException::toString
std::string toString() const
Returns a formatted string containing the message and hint of the error and all causes.
hyperapi::NotNullable
The column cannot contain NULL values.
Definition: TableDefinition.hpp:27
hyperapi::TableDefinition
A table definition.
Definition: TableDefinition.hpp:44
hyperapi::SqlType::date
static SqlType date() noexcept
Returns the DATE SQL type.
Definition: SqlType.hpp:159
hyperapi::Telemetry::SendUsageDataToTableau
Telemetry data will be sent to tableau to help improve the Hyper API.
hyperapi::Catalog
The catalog class gives access to the metadata of the attached databases of a connection.
Definition: Catalog.hpp:31
hyperapi::Connection
Defines a Hyper connection.
Definition: Connection.hpp:42
hyperapi::HyperException
Defines an exception object that is thrown on failure by the functions in the Hyper API C++ library.
Definition: HyperException.hpp:41
hyperapi::HyperProcess
Defines a Hyper process.
Definition: HyperProcess.hpp:36
hyperapi::SqlType::bigInt
static SqlType bigInt() noexcept
Returns the BIG INTEGER SQL type.
Definition: SqlType.hpp:100
hyperapi::SqlType::text
static SqlType text() noexcept
Returns the TEXT SQL type.
Definition: SqlType.hpp:137
hyperapi::TableDefinition::Column
A Column of a table definition.
Definition: TableDefinition.hpp:50
hyperapi::SqlType::doublePrecision
static SqlType doublePrecision() noexcept
Returns the DOUBLE PRECISION SQL type.
Definition: SqlType.hpp:122
hyperapi::Date
A date data value.
Definition: Date.hpp:18