2017-09-21 6 views
0

Je suis relativement nouveau dans Matlab et je charge un fichier .gz et je le dézippe pour l'insérer dans une base de données SQL.Matlab charge et décompresse 2 fichiers .gz

Il appelle les fonctions qui établissent une connexion en quelque sorte - qui fonctionne (jd.conn, etc.), mais la partie bizarre est que je reçois:

référence de la matrice d'index incorrect

Quand je frapper la boucle.

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

Quel est le message d'erreur réelle ? – excaza

+1

Un problème principal est que vous réécrivez 'filenames' dans la première ligne de votre boucle. Alors changez cette variable. Et 'strrep' n'a probablement pas besoin de l'astérisque si vous essayez de supprimer l'extension (ce n'est peut-être pas la meilleure approche si c'est votre objectif). –

+0

Le message d'erreur est: Référence incorrecte de la matrice d'index Que dois-je changer de 'nom de fichier' ou de ligne? – n00bc0d3r

Répondre

0

La source probable (s) d'erreur sont mentionnés dans les commentaires: vous remplacer immédiatement votre variable filenames et probablement un * supplémentaire dans votre argumentation strrep.

En supposant que vous voulez simplement supprimer l'extension de fichier filenames(i).name et passer que pour create_query, vous pouvez le faire en utilisant fileparts (et stocker le résultat dans une nouvelle variable):

for i = 1:size(filenames,1) 
    [~, queryName, ~] = fileparts(filenames(i).name); 
    [insert_query, transfer_query] = create_query(queryName); 
    ...