2017-09-21 9 views
0

私はMatlabには比較的新しく、.gzファイルをロードして解凍してSQLデータベースにプッシュします。Matlabは2つの.gzファイルをロード&解凍します

それは何らかの形で接続確立関数を呼び出します - (jd.connなど)を動作しますが、奇妙な部分は私が得ることです:

不適切なインデックス行列の参照

Iループを叩いた。

clear; 
    clc; 
    %% Connection 
    run('/C:/connect/connect_to_sql'); 
    load('/C:/connect/configuration.mat'); 
    global configuration 

    filepath = '/home/C:/folder/'; 
    homeDir = cd(filepath); 
    addpath(homeDir); 
    filenames = dir('*.gz'); 

    //LOOP STARTS HERE 
    for i = 1:size(filenames,1) 
     filenames = strrep(filenames(i).name, '*.gz', ''); 
     [insert_query, transfer_query] = create_query(filenames);  
     gunzip(filenames(i).name); 
     query(jd.conn, insert_query); 
     query(jd.conn, transfer_query); 
    end 

    cd(homeDir); 
    disp('Reference files loaded.'); 
+0

は、実際のエラーメッセージは何か:あなたは、単にfilenames(i).nameからファイル拡張子を削除し、create_queryに、あなたはfilepartsを使用してそれを行うことができ渡す(および新しい変数に結果を保存)したいと仮定すると、

? – excaza

+1

主な問題の1つは、ループの最初の行に 'filenames'を書き直すことです。その変数を変更してください。また、拡張機能を削除しようとしている場合は、 'strrep'はアスタリスクを必要としません(これがあなたの目標であれば最善の方法かもしれません)。 –

+0

エラーメッセージは次のとおりです。不適切なインデックスマトリックス参照 'ファイル名'またはその行を変更する必要はありますか? – n00bc0d3r

答えて

0

エラーの可能性が高いソース(S)は、コメントに記載されている:あなたはすぐにあなたの変数filenamesを上書きし、おそらくあなたのstrrep引数に余分な*を持っています。

for i = 1:size(filenames,1) 
    [~, queryName, ~] = fileparts(filenames(i).name); 
    [insert_query, transfer_query] = create_query(queryName); 
    ... 
関連する問題