, . , pgmex . PostgreSQL PgMex
100% C PostgreSQL 9.6 libpq.
, JDBC, IMHO . , - " SQL- Matlab-JDBC", - Undocumented Matlab. PostgreSQL JDBC / Matlab ( Java Matlab ).
JDBC , . , , . , datainsert Matlab Database Toolbox ( PostgreSQL, JDBC, JDBC-) batchParamExec PgMex :
+-----------+-----------+--------------+------------------+
| Number of | Data size | Time for | Time for |
| tuples | | datainsert | batchParamExec |
| | | (sec.) | (sec.) |
+-----------+-----------+--------------+------------------+
| 20000 | 23Mb | 37.0255 | 1.1217 |
+-----------+-----------+--------------+------------------+
| 40000 | 46Mb | 72.4008 | 2.2669 |
+-----------+-----------+--------------+------------------+
| 60000 | 69Mb | 112.4428 | 3.2055 |
+-----------+-----------+--------------+------------------+
| 80000 | 92Mb | n/a | 4.2073 |
+-----------+-----------+--------------+------------------+
| 100000 | 115Mb | n/a | 5.5277 |
+-----------+-----------+--------------+------------------+
| 300000 | 346Mb | n/a | 14.3530 |
+-----------+-----------+--------------+------------------+
| 600000 | 691Mb | n/a | 28.3156 |
+-----------+-----------+--------------+------------------+
| 800000 | 922Mb | n/a | 38.2579 |
+-----------+-----------+--------------+------------------+
| 1000000 | 1152Mb | n/a | 47.8714 |
+-----------+-----------+--------------+------------------+
| 1200000 | 1382Mb | n/a | 56.6258 |
+-----------+-----------+--------------+------------------+
| 1400000 | 1613Mb | n/a | 65.9764 |
+-----------+-----------+--------------+------------------+
| 1750000 | 2016Mb | n/a | 82.1829 |
+-----------+-----------+--------------+------------------+
| 2000000 | 2304Mb | n/a | 93.5854 |
+-----------+-----------+--------------+------------------+
n/a , " Java" , Java 939Mb. , , , .
PostgreSQL Matlab).
, , , JDBC .
IMHO libpq, PgMex, . PgMex , ,
mexPostgres ( - Matlab Central), ++.
( PQgetvalue libpq)
( , , , , , , , ). . PgMex, Matlab PostgreSQL - . , Matlab- ( ,
, Matlab).
, , , PgMex. , ( , , <>, , ):
% Create the database connection
dbConn=com.allied.pgmex.pgmexec('connect',[...
'host=<yourhost> dbname=<yourdb> port=<yourport> '...
'user=<your_postgres_username> password=<your_postgres_password>']);
% A test query
sql='select * from <table>'; % Gets all records
pgResult=com.allied.pgmex.pgmexec('exec',dbConn,sql); % Perform this test query
% Read the results
nFields=com.allied.pgmex.pgmexec('nFields',pgResult);
outCVec=cell(nFields,1);
fieldSpecStr='%<field_type_1> %<field_type_2> ...';
inpCVec=num2cell(0:nFields-1);
[outCVec{:}]=com.allied.pgmex.pgmexec('getf',pgResult,...
fieldSpecStr,inpCVec{:});
, "getf" - PgMex
( fieldSpecStr). outCVec
, valueVec, isNullVec isValueNullVec.
, , valueVec
, isNullVec isValueNullVec - NULL.