mysql - 使用 Matlab 向 MySQL 插入字符串和矩阵以及从 MySQL 获取字符串和矩阵

标签 mysql database matlab

我需要将数据存储在数据库中。我已经在 Matlab 中安装并配置了 MySQL 数据库(和 SQLite 数据库)。但是,我无法存储和检索除标量数值之外的任何内容。

% create an empty database called test_data base with MySQL workbench.
% connect to it in Matlab
conn=database('test_database','root','XXXXXX','Vendor','MySQL');

% create a table to store values
create_test_table=['CREATE TABLE test_table (testID NUMERIC PRIMARY KEY, test_string VARCHAR(255), test_vector BLOB, test_scalar NUMERIC)'];
curs=exec(conn,create_test_table)

到目前为止结果很好(curs.Message 是一个空字符串)

    % create a new record
    datainsert(conn,'test_table',{'testID','test_string','test_vector','test_scalar'},{1,'string1',[1,2],1})

% try to read out the new record
sqlquery='SELECT * FROM test_table8';
data_to_view=fetch(conn,sqlquery)

结果很糟糕:

data_to_view =

     1   NaN   NaN     1

从“fetch ”的文档中我期望:

data_to_view =
    1×4 table
         testID        test_string      test_vector    test_scalar    
      _____________    ___________    ______________    ________    
           1            'string1'       1x2 double         1  

直到我学会如何读取 Blob ,我什至愿意接受:

data_to_view =
    1×4 table
         testID        test_string      test_vector    test_scalar    
      _____________    ___________    ______________    ________    
           1            'string1'           NaN             1  

我使用 sqlite 数据库得到了同样的结果。如何存储然后读取字符串和 blob,为什么数据不以表格格式返回?

最佳答案

Matlab 没有记录 SQLite 和 MySQL 数据库检索的默认选项是尝试将所有内容作为数值数组返回。只需要这一行:

setdbprefs('DataReturnFormat','cellarray')

setdbprefs('DataReturnFormat','table')

为了获得不同数据类型的结果。然而!现在我的结果是:

    data_to_view =

      1×4 cell array

        {[2]}    {'string1'}    {11×1 int8}    {[1]}

如果我输入:

datainsert(conn,'test_table',{'testID','test_string','test_vector','test_scalar'},{1,'string1',typecast([1,2],'int8'),1})

然后我得到:

data_to_view =

          1×4 cell array

            {[2]}    {'string1'}    {16×1 int8}    {[1]}

我可以这样转换: 类型转换(data_to_view{3},'double')

答=

 1     2

不幸的是,这不适用于 SQLite。我得到:

data_to_view =

          1×4 cell array

            {[2]}    {'string1'}    {'      �?       @'}    {[1]}

我无法正确转换第三部分:

typecast(unicode2native(data_to_view{1,3}),'double')

ans =

    0.0001    2.0000

所以我仍然需要学习如何在 Matlab 中读取 SQLite blob,但这是一个不同的问题。

关于mysql - 使用 Matlab 向 MySQL 插入字符串和矩阵以及从 MySQL 获取字符串和矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48590877/

相关文章:

database - 如何获取刚刚插入的最新记录的ID?

database - 如何将数据分成训练集和测试集?

matlab - 错误 : 'You must call TIC without an output argument before calling TOC without an input argument.'

matlab - 无法使用自定义字体导出matlab图形

c# - 当安全答案正确时,ASP.NET ResetPassword 抛出 MembershipPasswordException

sql - 将多个 MySql 查询组合成一个查询

asp.net - 使用 sql helper(Microsoft.ApplicationBlocks.Data) 时的超时问题

matlab - matlab运算符 "|"是什么意思?

sql - MySQL:通过 auto_increment 列的值检查新记录是否不好?

mysql - 我怎样才能让这个mysql查询更快呢?命令是 killer 吗?极限?