I never used the Database>Save Table option. Actually I didn't know it existed till reading this post, so I wrote a bunch of my own functions of common tasks. While I feel they are slow, they at least can boast speeds better than anything in this thread.
Here's my BulkInsert function:
//Insert Table to Database..Table --assumes ncols matches
BulkInsert = function({db, dbTable, dt}, {Default Local},
//db - database connection
//dbTable = database table
//dt - JMP datatable
numCols = NCols(dt);
numRows = NRows(dt);
for(i=1, i<=numRows, i++,
valuesList = {};
for(j=1, j<=numCols, j++,
If(isDate(column(dt, j)),
insert into(valuesList, char(Format(column(dt, j)[i], "ddMonyyyy h:m:s")))
,
insert into(valuesList, column(dt, j)[i])
);
);
valuesText = substitute(char(valuesList), "{", "(", "}", ")", "\!"", "'");
Substitute Into(valuesText, ".,", "NULL,");
SQL_string = "Insert Into " || dbTable || "\!N" ||
"Values " || valuesText;
Execute SQL(db, SQL_string);
);
);
You'll need the isDate function I wrote that you can find here: Is there an easy way to know if a column is Date/Time?
Or you can comment out that portion of the code if you don't have any date/time columns.