Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

To resolve issues starting MATLAB on Mac OS X 10.10 (Yosemite) visit: http://www.mathworks.com/matlabcentral/answers/159016

Loading multiple files into the same database

Asked by Bob Choy on 16 Dec 2012

Hi! I have the folowing function:

function loaddatabase(Name_File,Namedb)
	id = fopen(Name_File, 'r');
	create = 'create table Table1 ( Temperature integer, Humidity real, PRIMARY KEY(Temperature) );';
	sqlite(create,Namedb);
	while ~feof(id) 
		temperature = fscanf (id, '%d', 1);
		humidity = fscanf (id, '%f\n',1);
		insert = sprintf('insert into Table1 values ( %d, %f );', temperature, humidity);
		sqlite(insert,Namedb);
	end
end

This function creates a database from information contained a .txt file. Where Name_File is the name of that .txt file and Namedb is the name I want to give my database. My .txt files follow the following structure: file1.txt, file2.txt, etc...

My problem is that I don't want load the info of a single .txt file but rather all of them into the same database.

How can I do this?

Thank you in advance.

0 Comments

Bob Choy

Products

No products are associated with this question.

2 Answers

Answer by Mark Whirdy on 16 Dec 2012
Edited by Mark Whirdy on 16 Dec 2012

Hi Bob

Can you read the contents of all files into matlab in loop, vertically concatenating the cellarrays and perform a single fastinsert (of the vertcatted cellarray) at the end? If I'm missing the crux of the issue here, could you provide some more code to make the context clearer?

1 Comment

Bob Choy on 16 Dec 2012

Im not sure what your first question was, can you type that into code so I can understand it better? I also updated the code so its hopefully clearer now.

Mark Whirdy
Answer by Mark Whirdy on 16 Dec 2012

In semi-pseudo code below

My_array = []; % container for all file contents
for i = 1:size(Name_File_Array)
fid = fopen(Name_File_Array{i,:}, 'r');
str = fread(fid, '*char')'; % whatever parsing is suitable for your data, since I can't see your data I have no idea what
My_array = [My_array;str]; % vertcat each file contents into a single large array
exec('Create table mytable(header1,header2,header3)');
fastinsert('mytable',My_array)
end

1 Comment

Bob Choy on 16 Dec 2012

My data follows the following structure:

integer	real
integer	real
integer	real

And so on. Where the first column are temperature values and the second humidity values. Does this help you understand how can I do this using my function above?

Thank you for your efforts so far.

Mark Whirdy

Contact us