如何将从Matlab矩阵乘以150列的1Million +行插入到SQL表中。 Matlab的Fastinsert似乎不适合这个,因为它需要很长时间。我们目前正在使用SQL服务器数据库。
我们当前的流程是将矩阵写入CSV / .txt,然后通过SSIS / dts包将此csv加载到表中。现在我们正在寻找切断此过程并直接写入SQL表。
答案 0 :(得分:3)
似乎最快的方法是实际构建一个大的插入语句。
此处的example given声称这可以带来100倍的加速。
%% Upload using an INSERT statement
% clear the table
exec(db,deleteQuery);
% transpose the data
allData2 = allData';
% format the input values
values = sprintf('(%f,%u,''%s''),\n',allData2{:});
% change NaNs to NULLs
values = regexprep(values,'NaN','null');
% construct the SQL INSERT statement
insertQuery = sprintf('insert into %s (%s,%s,%s) values ',tableName,fields{:});
insertQuery = [insertQuery , values(1:end-2),';'];
tic
exec(db,insertQuery);
toc
考虑到您的数据大小,您可能希望将其切成一小块,但仍然可以获得比现有速度更好的速度。