您必须创建第table
一个吗?我会尝试直接将数据单元格数组传递给insert
这样的:
insert(conn, tableName, colnames, full_matrix);
以上假设是cell2table
调用给你一个与特殊字符相关的错误。如果是insert
调用,那么我猜 MATLAB 不会让您创建列名不符合其变量命名约定的数据库。如果是这种情况,您必须将列名转换为有效的名称,您可以使用genvarname
(对于较旧的 MATLAB 版本)或matlab.lang.makeValidName
(建议用于 R2014a 和更高版本):
colNames = {'maß','kapazität', 'räder'};
validNames = genvarname(colNames);
% or...
validNames = matlab.lang.makeValidName(colNames, 'ReplacementStyle', 'hex');
validNames =
1×3 cell array
'ma0xDF' 'kapazit0xE4t' 'r0xE4der'
请注意,上述解决方案将无效字符替换为其十六进制等效项。您还可以更改'ReplacementStyle'
以用下划线替换它们或完全删除它们。我会使用十六进制值,因为如果您以后需要这些值,它可以让您选择将列名转换回其原始字符串值。以下是使用regexprep
、hex2dec
和的方法char
:
originalNames = regexprep(validNames, '0x([\dA-F]{2})', '${char(hex2dec($1))}');
originalNames =
1×3 cell array
'maß' 'kapazität' 'räder'