Weka和SQL Server 2019(Mac OS Big Sur 11.5测试版,MacBook Pro M1)连



晚上好。我希望有人能帮我做这个。。。

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

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

  3. 我安装了dmg,并将应用程序和weka文件夹复制到我的/Applications文件夹

  4. 我将我喜欢的JDBC驱动程序添加到了/Libraries/Java/Extensions(SQL Server、MySQL和MonetDB)中。

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

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

    microsoft sql server 2005 express edition的数据库设置

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

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

    url:http://www.microsoft.com/

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

    作者:fracpete

    版本:$修订:15255$

    jdbc驱动程序(逗号分隔列表)jdbcDriver=com.microsoft.sqlserver.jdbc.SQLServerDriver

    数据库url

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

    特定数据类型

    string,getstring()=0-->标称的

    布尔值,getboolean()=1-->标称的

    double,getdouble()=2-->数字

    字节,getbyte()=3-->数字

    short,getbyte()=4-->数字

    int,getinteger()=5-->数字

    long,getlong()=6-->数字

    float,getfloat()=7-->数字

    日期,getdate()=8-->日期

    text,getstring()=9-->字符串

    时间,gettime()=10-->日期

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

    varchar=0浮子=2tinyint=3int=5

    手动添加的值

    字符串=0bigint=6nvarchar=9小数=2位=1

    其他选项

    CREATE_DOUBLE=双精度CREATE_STRING=VARCHAR(8000)CREATE_INT=INTCREATE_DATE=日期时间日期格式=yyyy-MM-dd HH:MM:sscheckUpperCaseNames=falsecheckLowerCaseNames=falsecheckForTable=真实

    此数据库的所有保留关键字

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

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

    关键字=
    ADD、
    ALL、
    ALTER、
    1AND、
    2ANY、
    AS、
    3ASC、
    >授权、
    5BACKUP、
    0BEGIN、BREAK、
    Main BROWSE、
    BULK、
    BY、
    CASCADE、
    CASE、
    CHECK、
    1CHECKPOINT、2CLUSTERED、
    3COALESCE、
    COLLATE,
    COLUMN,
    COMMIT,
    1COMPUTE,
    CONSTRAINT,
    2CONTAINS,
    3CONTAINSTABLE,
    CONTINUE、
    CONVERT、
    CREATE、
    1CROSS、
    2CURRENT_DATE、
    3CURRENT_TIME、
    CURRENT_IMESTAMP、
    CURRENT_USER、
    CURSOR、
    DATABASE、
    DBCC、
    DEALLOCATE
    分布式,
    双重,
    DROP,
    1DUMP,
    2ELSE,
    3END,
    5ERRLVL,
    0ESCAPE,
    EXCEPT、
    EXEC、
    EXECUTE、
    1EXISTS、
    2EXIT、
    EXTERNAL、
    FETCH、
    FILE、
    3FILLFACTOR、
    5FOR、
    >FOREING、
    0FREETEXT、2FUNCTION、
    GOTO、GRANT、GROUP、
    Main HAVING、
    1HOLDLOCK、IDENTITYCOL,
    IDENTITY_INSERT,
    IF,
    1IN,
    2INDEX,
    3INNER,
    INSERT,
    INTERSECT,
    INTO,
    IS,
    1JOIN,
    2KEY,
    5KILL,
    3LEFT,
    >LIKE,
    0LINENO,
    LOAD,
    Main NATIONAL,NOCHECK,
    NONCLUSTERED,
    NOT,
    NULL,OPENQUERY,
    OPENROWSET,
    OPENXML,
    1OPTION,
    2OR,
    3ORDER,
    >OUTER,
    5OVER,
    0PERCENT,
    PIVOT,
    PLAN、
    PRECISION、
    PRIMARY、
    1PRINT、
    2PROC、
    3PROCEDURE、
    0PUBLIC、
    5RAISEROR、
    >READ、
    READTEXT、
    RECONFIGURE、
    REFERENCES、REPLICATION、
    RESTORE、Main RETURN、
    REVERT、
    REVOKE、
    RIGHT、ROWGUIDCOL,
    规则,
    SAVE,
    1SCHEMA,
    SECURITYAUDIT,
    SELECT,
    SESSION_USER、
    SET、
    SETUSER、
    SHUTDOWN、
    2SOME、
    1STATISTICS、
    3SYSTEM_USER,
    TABLE、
    >TABLESAMPLE、
    5TEXTSIZE、
    THEN、
    TO、TRAN、
    TRANSACTION、
    TRIGGER、
    TRUNCATE、TSEQUAL、
    UNION、
    UNPIVOT、
    UPDATE,
    UPDATETEXT,
    USE,
    USER,
    VALUES,
    VARYING,
    VIEW,
    WAITFOR,
    WHEN,
    WHERE,
    WHILE,
    1WITH,
    2WRITETEXT

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

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

    关键字MaskChar=_

    #用于使用DatabaseLoader/Saver加载和保存实例的标志nomialToStringLimit=50id列=自动生成id

  7. 我将相同的props文件(/users/Myname/wekafiles/DatabaseUtils.props)复制到weka-3-8-5-azul-zul.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数据库中使用更大的数据集来训练模型。

非常感谢您的帮助。

Michael p.

我不是Mac用户,也不经常将Weka作为独立工具使用。但以下是刚才在我的Linux盒子上使用Java11时对我有效的方法。

假设您的weka.jar位于以下目录中(例如,从独立于平台的zip文件中提取):

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

所有JDBC驱动程序jar都存储在以下目录中:

~/tools/jdbc

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

CLASSPATH=~/tools/weka/weka-3-9-5/weka.jar:~/tools/jdbc/* java weka.gui.GUIChooser

注意:这假设java可执行文件可从PATH环境变量的目录中获得。

更新后的DatabaseUtils.props应进入$HOME/wekafiles/props

最新更新