This example shows how to import data from a database into MATLAB®, perform calculations on the data, and export the results to a database table.
The example assumes that you are connecting to a PostgreSQL database that contains tables named
salesvolume table contains the column names for each month. The
yearlysales table contains the column names
salestotal. Also, the example uses a PostgreSQL database version 9.405 database and the libpq driver version 10.12.
Create a PostgreSQL native interface database connection to a PostgreSQL database using the data source name, user name, and password.
datasource = "PostgreSQLDataSource"; username = "dbdev"; password = "matlab"; conn = postgresql(datasource,username,password);
Import sales volume data for the month of March using the database connection. The
salesvolume database table contains sales volume data.
tablename = "salesvolume"; data = sqlread(conn,tablename);
Display the first three rows of sales volume data. The fourth variable contains the data for the month of March.
ans=3×1 table march _____ 981 1414 890
Calculate the sum of the March sales. Assign the result to the MATLAB workspace variable
total and display the result.
total = sum(data.march)
total = 14606
Retrieve the name of the month from the sales volume data.
month = data.Properties.VariableNames(4);
Define the names of the columns for the data to insert as a string array.
colnames = ["month" "salestotal"];
Create a MATLAB table that stores the data to export.
results = table(month,total,'VariableNames',colnames);
Determine the status of the
AutoCommit database flag. This status determines whether or not the insert action can be undone.
ans = "on"
AutoCommit flag is set to
on. The database commits the exported data automatically to the database, and this action cannot be undone.
Insert the sum of sales for the month of March into the
tablename = "yearlysales"; sqlwrite(conn,tablename,results)
Import the data from the
yearlysales table. This data contains the calculated result.
data = sqlread(conn,tablename)
data=1×2 table month salestotal _______ __________ "march" 14606