Weka 和 SQL Server 2019Mac OS Big Sur 11.5 beta,MacBook Pro M1连接问题

问题描述

晚上好。我希望有人能帮我解决这个问题...

  1. 我确保为 mac、Intel 安装了 weka 2-8-5 azul zulu,因为 ARM dmg 安装程序似乎已损坏。我使用 OS big sur 11.5 beta 和 MacBookPro M1 收到损坏的软件包消息。

  2. 我使用的是 openjdk 11 (AdoptOpenJDK-11.0.11+9 (build 11.0.11+9))

  3. 我安装了 dmg 并将 app 和 weka 文件夹复制到了我的 /Applications 文件

  4. 我将首选的 JDBC 驱动程序都添加到了 /Libraries/Java/Extensions(sql Server、MysqLmonetdb)。

  5. 还将 JDBC 驱动程序添加到我的 /Users/Myname/jdbc 文件夹中。 (我在一些论坛上读到过这个)。

  6. 将 /Users/Myname/wekafiles/props/DatabaseUtils.props 修改为这样...(尝试连接到在 linux docker 容器上运行的 MS sql Server Edge 19。我可以从适用于 Mac 的 Python、DBeaver 和 Azure Data Studio):

    Microsoft sql Server 2005 Express Edition 的数据库设置

    可在此处找到有关数据库访问的一般信息:

    https://waikato.github.io/weka-wiki/databases/

    网址:http://www.microsoft.com/

    jdbc:http://msdn2.microsoft.com/en-us/data/aa937724.aspx

    作者:Fracpete(在 waikato dot ac dot nz 的 fracpete)

    版本:$修订:15255 $

    JDBC 驱动程序(逗号分隔列表)

    jdbcDriver=com.microsoft.sqlserver.jdbc.sqlServerDriver

    数据库网址

    jdbc:sqlserver://localhost:1443;databaseName=MyDB;

    特定数据类型

    string,getString() = 0; --> 名义上

    布尔值,getBoolean() = 1; --> 名义上

    double,getDouble() = 2; --> 数字

    byte,getByte() = 3; --> 数字

    short,getByte()= 4; --> 数字

    int,getInteger() = 5; --> 数字

    long,getLong() = 6; --> 数字

    float,getFloat() = 7; --> 数字

    日期,getDate() = 8; --> 日期

    文本,getString() = 9; --> 字符串

    时间,getTime() = 10; --> 日期

    时间戳,getTime() = 11; --> 日期

    varchar=0 浮动=2 tinyint = 3 整数=5

    手动添加的值

    字符串=0 bigint=6 nvarchar=9 十进制=2 位=1

    其他选项

    CREATE_DOUBLE=双精度 CREATE_STRING=VARCHAR(8000) CREATE_INT=INT CREATE_DATE=日期时间 日期格式=yyyy-MM-dd HH:mm:ss checkUpperCaseNames=false checkLowerCaseNames=false checkForTable=true

    数据库的所有保留关键字

    基于以下 URL (2009-04-13) 列出的关键字:

    http://msdn.microsoft.com/en-us/library/ms189822(SQL.90).aspx

    关键字=
    添加
    所有,
    改变,
    和,
    任何,
    AS,
    ASC,
    授权,
    备份,
    开始,
    之间,
    打破,
    浏览,
    散装,
    BY,
    级联,
    案例,
    检查,
    检查点,
    关闭
    集群,
    合并,
    整理,
    列,
    提交,
    计算,
    约束,
    包含,
    可容纳,
    继续,
    转换,
    创建,
    十字,
    当前,
    CURRENT_DATE,
    CURRENT_TIME,
    CURRENT_TIMESTAMP,
    CURRENT_USER,
    光标,
    数据库
    DBCC,
    解除分配,
    声明,
    认,
    删除
    拒绝,
    描述,
    磁盘,
    与众不同,
    分布式,
    双,
    放下,
    转储,
    其他,
    完,
    错误
    逃离,
    除了,
    执行,
    执行,
    存在,
    退出
    外部,
    取,
    文件
    填充因子,
    对于,
    国外,
    自由文本,
    自由文本,
    发件人,
    满,
    功能
    转到,
    格兰特,
    组,
    有,
    锁定,
    身份,
    IDENTITYCOL,
    IDENTITY_INSERT,
    如果,
    在,
    索引,
    内部,
    插入,
    相交,
    INTO,
    是,
    加入,
    钥匙,
    杀,
    左,
    喜欢,
    LINENO,
    负载
    全国,
    没有检查,
    非聚集,
    不是,
    空,
    NULLIF,
    的,
    关闭
    偏移,
    开,
    打开,
    开放数据源,
    公开查询
    开放式网络,
    OPENXML,
    选项,
    或,
    订购,
    外,
    结束,
    百分比,
    枢轴,
    计划,
    精密,
    主要,
    打印,
    过程,
    程序,
    公开,
    RAISERROR,
    阅读,
    阅读全文,
    重新配置,
    参考文献,
    复制,
    恢复,
    限制,
    返回,
    还原,
    撤销,
    对了,
    回滚,
    ROWCOUNT,
    ROWGUIDCOL,
    规则,
    保存,
    架构,
    安全审计,
    选择,
    SESSION_USER,
    设置,
    设置用户
    关机,
    一些,
    统计
    SYstem_USER,
    桌子,
    表样,
    文本大小,
    那么,
    给,
    顶,
    陈,
    交易,
    触发器,
    截断,
    TSEQUAL,
    联合,
    独一无二,
    转轴,
    更新,
    更新文本,
    使用,
    用户
    价值观,
    变化,
    查看,
    服务员,
    什么时候,
    哪里,
    同时,
    与,
    文字

    要附加到属性名称的字符以避免由于

    关键字和属性名称间的冲突

    KeywordsMaskChar=_

    #flags 用于使用 DatabaseLoader/Saver 加载和保存实例 标称ToStringLimit=50 idColumn=auto_generated_id

  7. 我将相同的道具文件 (/users/Myname/wekafiles/DatabaseUtils.props) 复制到 weka-3-8-5-azul-zulu.app java 文件夹中未压缩的 weka.jar 文件。 (jar xf weka.jar)

  8. 重新打包文件文件夹到weka.jar (jar cf weka.jar *)

  9. 我在重新启动机器后检查了 CLAsspATH env 变量是否定义良好并且来自 .zprofile。 JAVA_HOME 也定义良好,运行良好。

  10. 没有任何效果...仍然收到消息:

连接到:jdbc:sqlserver://localhost:1443;databasename=MyDB = false

无法找到合适的驱动程序...

有没有更好的方法来做到这一点?我非常喜欢 Weka,但我想用 MysqLsqlServer 和 monetdb 数据库中的更大数据集训练模型。

非常感谢任何帮助。

迈克尔 P.

解决方法

我现在不是 Mac 用户,也很少将 Weka 用作独立工具。但这是我刚刚在我的 Linux 机器上使用 Java 11 的方法。

假设您的 [[0,0],[0,0]] [[0,0]] [[1,[1,2,3],3]] [[5,[5,7,9],9]] [[12,[12,15,18],18]] 位于以下目录中(例如,从与平台无关的 zip 文件中提取):

weka.jar

并且您所有的 JDBC 驱动程序 jar 都存储在此目录中:

~/tools/weka/weka-3-9-5

然后您可以像这样从终端启动 Weka,使用 ~/tools/jdbc 变量仅用于 GUIChooser 的此 CLASSPATH 调用:

java

注意:这假设 CLASSPATH=~/tools/weka/weka-3-9-5/weka.jar:~/tools/jdbc/* java weka.gui.GUIChooser 可执行文件可从 java 环境变量的目录中获得。

更新后的 PATH 应该放在 DatabaseUtils.props 中。