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

时间:2021-07-19 00:40:05

标签: java sql-server connection weka monetdb

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

  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、MySQL 和 MonetDB)。

  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) 列出的关键字:< /h1>

    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,但我想用 MySQL、SQLServer 和 MonetDB 数据库中的更大数据集训练模型。

非常感谢任何帮助。

迈克尔 P.

1 个答案:

答案 0 :(得分:0)

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

假设您的 [[0, 0, 0], [0, 0, 0], [0, 0, 0]] [[0, 0, 0], [0, 0, 0], [0, 0, 0]] [[1, 0, 0], [1, 0, 0], [1, 0, 0]] [[1, 2, 0], [1, 2, 0], [1, 2, 0]] [[1, 2, 3], [1, 2, 3], [1, 2, 3]] [[5, 2, 3], [5, 2, 3], [5, 2, 3]] [[5, 7, 3], [5, 7, 3], [5, 7, 3]] [[5, 7, 9], [5, 7, 9], [5, 7, 9]] [[12, 7, 9], [12, 7, 9], [12, 7, 9]] [[12, 15, 9], [12, 15, 9], [12, 15, 9]] [[12, 15, 18], [12, 15, 18], [12, 15, 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 中。