J'accède à la base de données MySQL publique en utilisant JDBC et mySQL java connector. exonCount est int (10), exonStarts et exonEnds sont longblob champs.Récupérer le champ blob de la base de données mySQL avec MATLAB
javaaddpath('mysql-connector-java-5.1.12-bin.jar')
host = 'genome-mysql.cse.ucsc.edu';
user = 'genome';
password = '';
dbName = 'hg18';
jdbcString = sprintf('jdbc:mysql://%s/%s', host, dbName);
jdbcDriver = 'com.mysql.jdbc.Driver';
dbConn = database(dbName, user , password, jdbcDriver, jdbcString);
gene.Symb = 'CDKN2B';
% Check to make sure that we successfully connected
if isconnection(dbConn)
qry = sprintf('SELECT exonCount, exonStarts, exonEnds FROM refFlat WHERE geneName=''%s''',gene.Symb);
result = get(fetch(exec(dbConn, qry)), 'Data');
fprintf('Connection failed: %s\n', dbConn.Message);
end
Voici le résultat:
result =
[2] [18x1 int8] [18x1 int8]
[2] [18x1 int8] [18x1 int8]
result{1,2}'
ans =
50 49 57 57 50 57 48 49 44 50 49 57 57 56 54 55 51 44
Ceci est faux. La longueur des vecteurs dans les 2ème et 3ème colonnes doit correspondre aux nombres de la 1ère colonne.
La première goutte, par exemple, doit être [21992901; 21998673]
. Comment je peux le convertir?
Mise à jour:
Juste après avoir soumis cette question, je pensais que ce serait peut-être la représentation hexagonale d'une chaîne. Et il a été confirmé:
>> char(result{1,2}')
ans =
21992901,21998673,
Alors maintenant, je besoin de convertir toutes les données hexagonaux blobs dans des vecteurs numériques. Je pense toujours à le faire de manière vectorisée, car le nombre de lignes peut être important.
assez intéressant, dans les derniers jours, il y a un fil actif sur CSSM sur l'accès DB CLOBs de Matlab: http://www.mathworks.com/matlabcentral/newsreader/view_thread/278869 (ne répond pas à votre question mais pourrait être intéressant pour les utilisateurs qui tombent sur ici) –