精华内容
下载资源
问答
  • Access数据库密码破解器,非常方便,而且破解密码非常快,压缩包里面有序列号,可以注册正版...没注册的只能破解4位数密码
  • RazorSQL Mac 破解版是一款看似简单实则功能非常出色的SQL数据库查询、编辑、浏览和管理工具。RazorSQL for Mac可以帮你管理多个数据库,支持主流的30多种数据库,包括Cassandra、MongoDB、HSQLDB、MySQL,OpenBase...

    RazorSQL Mac 破解版是一款看似简单实则功能非常出色的SQL数据库查询、编辑、浏览和管理工具。RazorSQL for Mac可以帮你管理多个数据库,支持主流的30多种数据库,包括Cassandra、MongoDB、HSQLDB、MySQL,OpenBase、Oracle、SQLite、SQL Server等数据库。允许你通过JDBC或ODBC连接各种数据库,轻松地浏览,导航,创建,编辑,修复,执行从简单到复杂过程的SQL查询,即便您使用不同的数据库,需要的朋友欢迎来Mac天空下载!

    原文地址请点击这里

    RazorSQL Mac破解版 破解教程

    RazorSQL for Mac破解版镜像包下载完成后打开,将左侧的【RazorSQL】拖到右侧的应用程序进行安装。应用程序中运行RazorSQL软件,跳出激活界面。

    回到RazorSQL Mac破解版镜像包,打开【d-KeyMaker.jar】

    选择【razorsql v7.x】,再点击【Generate】生成razorsql激活码,最后点击【Copy】复制razorsql激活码。

    将razorsql激活码粘贴到激活页面,点击【Verify Code】

    razorsql for mac破解成功,请尽情使用!

    RazorSQL Mac破解版 官方介绍

    RazorSQL - 查询,编辑,浏览和管理数据库
    RazorSQL是用于Windows,macOS,Mac OS X,Linux和Solaris的SQL查询工具,数据库浏览器,SQL编辑器和数据库管理工具。
    RazorSQL已经在40多个数据库上进行了测试,可以通过JDBC或ODBC连接到数据库 ,并且包括对以下数据库的支持:

    RazorSQL Mac破解版 软件特色

    数据库浏览器
    浏览数据库对象,如模式,表,列,主键和外键,视图,索引,过程,函数等。
    SQL编辑器
    编辑SQL脚本。运行SQL查询。自动列和自动查表。使用功能强大的 EditRocket代码编辑器,支持超过20种编程语言,包括SQL,PL / SQL,TransactSQL,SQL PL,HTML,Java,XML等等。
    数据库工具
    用于创建,更改,描述,执行和删除数据库对象(如表,视图,索引,存储过程,函数,触发器等)的可视化工具。
    数据库查询工具
    包含查询的多表格显示,以及过滤,排序,搜索等选项。
    导入数据
    从各种格式导入数据,如分隔文件,Excel电子表格和固定宽度文件。
    导出数据
    以各种格式导出数据,如分隔文件,XML,HTML,Excel电子表格,JSON和SQL插入语句。
    SQL查询生成器
    创建选择,插入,更新和删除SQL语句。创建多表连接。
    内置数据库
    包含一个强大的关系数据库(HSQLDB),可以立即运行,无需手动配置即可使用。
    编辑表格工具
    以格式插入,更新和删除表格数据。查找和替换数据,预览生成的SQL,等等。
    数据比较
    比较跨数据库的表数据,或比较查询结果。

    RazorSQL Mac破解版 软件功能

    下面列出的是RazorSQL 7的主要特性。RazorSQL用户界面使用户能够浏览数据库对象和结构,执行SQL查询和语句,搜索数据库对象和数据,编辑数据库表,创建和更改数据库对象等等。
    菜单分组功能参考 - RazorSQL中每个菜单选项的详细信息。
    数据库特定功能 - 为每个数据库提供的功能的详细信息,例如MySQL,Oracle,PostgreSQL,DB2,MS SQL Server,Salesforce,Sybase,SQLite等等。
    高级连接功能 - RazorSQL可以连接到数据库的各种方式。
    数据库和SQL工具 - RazorSQL提供的各种工具
    SQL编辑器 - RazorSQL中包含的SQL编辑器的功能。
    数据库浏览器 - 包含在RazorSQL中的数据库浏览器的功能。
    内置数据库 - 包含在RazorSQL中的内置关系数据库的特性。
    高级连接功能内置对DB2,Derby / JavaDB,DynamoDB,Firebird,FrontBase,HSQLDB,Informix,MySQL,OpenBase,Oracle,PostgreSQL,Salesforce,SimpleDB,SQLite,SQL Server,Sybase Adaptive Server Enterprise和Sybase SQL Anywhere的支持。还可以连接到任何支持JDBC或ODBC(仅限Windows)的数据库,如Access,Daffodil,H2,Ingres,Interbase,Mimer SQL,Mckoi,Paradox,Pervasive,Pointbase,Solid和Teradata。
    MySQL,PostgreSQL和MS SQL Server PHP桥接器,用于通过PHP连接到MySQL,PostgreSQL和SQL Server数据库。允许远程访问在支持PHP的Web服务器上运行的MySQL,PostgreSQL或SQL Server数据库
    MS SQL Server ASP桥接器,用于通过ASP连接到SQL Server数据库。允许远程访问在支持ASP的Web服务器后运行的SQL Server数据库
    一个RazorSQL JDBC Bridge,用于通过JEE / J2EE应用程序服务器或Servlet容器连接到数据库
    数据库和SQL工具创建,更改和删除表格和视图
    复制/备份表
    *创建和删除索引和序列
    *创建和删除存储过程,函数,包和触发器
    *创建和删除数据库和用户
    多表数据库数据搜索工具
    搜索数据库对象的工具
    编辑表格工具
    *编辑存储过程,函数,包和触发器
    *数据库转换工具可将数据库表从一种类型转换为另一种类型
    描述表格和视图
    生成DDL工具以生成表格,视图和索引DDL。
    查看表格和视图的内容
    *查看存储过程,函数,包和触发器的内容
    用于选择,插入,更新和删除语句的SQL查询生成器
    以文本,HTML,XML,Excel,分隔文件格式或插入语句导出数据
    将数据从分隔文件,Excel文件或固定宽度文件导入表格
    执行存储过程
    SQL解释计划工具
    SQL查询计划程序
    比较表数据或查询结果
    文件比较工具
    用于查看/提取Zip和Jar文件的Zip实用程序
    文件系统浏览器
    数据库元数据查看器(函数,类型等)
    用于从命令行运行RazorSQL工具的命令行界面。
    SQL编辑器SQL,PL / SQL,TransactSQL,SQL PL,批处理,C,COBOL,CSS,C ++,C#,Java,JavaScript,JSP,HTML,PHP,Perl,Python,Ruby,Shell脚本和XML的语法高亮显示
    自动完成表格和列
    自动列查找
    自动查表
    SQL格式化程序
    支持参数化查询
    执行,执行全部提取和执行批处理功能
    查询结果的多表格显示
    可排序的查询结果
    可过滤的查询结果
    可搜索的查询结果
    所有查询的SQL历史记录和每个连接的查询记录
    所有支持的编程语言的自动函数查找以及Java和JSP的自动方法查找
    查询列表,标签列表和功能/方法列表选项,用于可编辑查询,标签或功能/方法的可点击显示
    文件工具,如头部,尾部,获取部分,搜索/正则表达式搜索,移动,复制,重命名,删除,大小和获取信息。
    SQL收藏夹,用于快速方便地将常用查询插入到编辑器中
    用户定义文本一键点击的关键提示功能
    正则表达式查找,查找/替换,在文件中查找/替换
    括号匹配,标签匹配和转到线命令
    打印支持编辑器内容和查询结果
    支持数十种文件编码
    内置和自定义用户模板
    连接保持活动
    插件API(允许用户为RazorSQL添加自定义功能)
    数据库浏览器用于导航数据库对象的树结构
    使用RazorSQL提供的特定于数据库的系统查询或用户提供的查询进行数据库导航,或使用默认的JDBC / ODBC驱动程序设置导航数据库结构。
    在表格,视图等上单击内容查看
    列信息包括列名,密钥,数据类型,可空信息等。
    *显示对象的信息,如过程,函数,触发器,索引,约束,序列等。
    单击为表,视图和索引生成DDL。
    搜索表格和查看数据。
    SQL选择,插入,更新和删除查询的单击生成。
    内置数据库不需要最终用户配置
    立即连接到一个强大的数据库
    使用功能强大的HSQLDB数据库引擎
    *自动将其他数据库的表和查询复制到本地数据库

    RazorSQL Mac破解版 软件特征

    一个数据库导航用于浏览数据库对象。
    用于创建SQL查询的SQL编辑器。
    用于创建,编辑,删除,描述,更改和查看表格,视图,索引和序列的可视化工具
    Visual Tools用于创建,编辑,删除和执行存储过程,函数和触发器
    强大的编程编辑器,嵌入强大的 EditRocket代码编辑器,支持20种编程语言,包括SQL,PL / SQL,TransactSQL,SQL PL,HTML,XML等等。
    导出工具 - 以各种格式导出数据
    导入工具 - 将分隔文件,Excel文件或固定宽度文件中的数据导入到表格中
    与艘船内置的关系数据库引擎(HSQLDB),这是启动和运行的开箱,无需最终用户管理
    甲生成DDL工具用于产生表,视图,和索引DDL。
    表/ SQL查询比较工具,用于跨多个连接比较表或查询
    数据库数据搜索工具,用于搜索单个或多个数据库表和查看数据。
    数据库对象搜索工具,用于搜索数据库对象。
    备份工具,如数据库备份工具和表备份工具
    数据库转换工具,用于许多流行的数据库,如MySQL,Oracle,DB2,PostgreSQL,SQLite,MS SQL Server和MS Access。
    自动列和自动查表
    SQL格式化程序
    SQL查询生成器工具
    SQL查询计划程序工具
    命令行界面
    PHP桥接器,用于通过启用PHP的Web服务器远程连接到MySQL,PostgreSQL和SQL Server数据库
    通过启用ASP的Web服务器远程连接到MS SQL Server数据库的ASP桥
    用于为各种操作生成SQL的SQL GUI工具
    使用数据库编辑器编辑,删除和插入数据库数据
    适用于所有主要操作系统,包括Windows,MacOS,Mac OS X,Linux,Solaris和任何其他支持Java的操作系统
    使用Apache Cassandra,Apache Derby / JavaDB,Apache Hive,Daffodil DB,DB2,DBASE,Druid,DynamoDB,Firebird,FrontBase,H2,HSQLDB / HyperSQL,Informix,Ingres,Interbase,Mckoi,Microsoft Access,Microsoft SQL Server,Mimer SQL,MongoDB,MySQL,Netezza,OpenBase,Oracle,Pervasive,Pointbase,PostgreSQL,Redshift,Salesforce,SimpleDB,Solid,SQLite,Sybase Adaptive Server Enterprise,Sybase SQL Anywhere,Teradata和VoltDB

    更新日志

    RazorSQL Mac(SQL数据库查询工具)含激活码 v8.2.4最新破解版

    增强功能

    • 在SQL菜单中添加了“最近查询(所有连接)”选项
    • 在SQL菜单中添加了“最近查询(此连接)”选项
    • Firebird:添加了数据库工具 - >创建 - >创建数据库工具
    • Firebird:添加了在设置新Firebird连接时创建新数据库的功能

    变化

    • 添加了首选项以启用关闭SQL历史记录的存储

    小编的话

    全新的RazorSQL for Mac激活版功能更加强大,例如添加了在同一选项卡中显示多个查询结果的功能。添加了暗模式外观选项,Datastax Driver添加了设置连接超时和读取超时连接属性的功能等等,需要的朋友欢迎下载体验!

    展开全文
  • Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,密钥 Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、...
  • 二维码作激活码(密钥)功能开发

    千次阅读 2015-04-17 01:31:53
    接到先前公司的老板的一个需求,他们用Unity做的应用软件,有一个需求:用二维码作为应用激活密钥,一个二维码能激活五台设备,当激活设备数目大于5该密钥失效。鉴于之前老板先前待我还可以,就当还个人情,帮他完成...

    这周开始又转回了熟悉而又陌生的Unity开发,一年前从Unity转向cocos2dx,这一年里有不少曲折,也有不少的心酸,或许是因为“心”未定,又或许因为其他,有种使不上劲的感觉,曾经的傲气逐渐的被“驱散”,习惯了被训斥和教育。面的各种形形色色的技术,总是经不住诱惑,都想学习一遍,但又无奈精力有限,加上工作的压力,每天都搞的身心疲惫,总之这一年里对自己的评价用“失望”两个字来形容!但从这周开始又重回Unity开发,心里有一丝喜感,或许真的对它期待已久!昨晚看着游戏蛮牛上一些老大们写的关于Unity的技术分享的文章,直到一点还依然没有睡意,深深的陶醉了,迫于第二天要工作的压力才不得不依依不舍的关闭电脑睡觉。接到先前公司的老板的一个需求,他们用Unity做的应用软件,有一个需求:用二维码作为应用激活密钥,一个二维码能激活五台设备,当激活设备数目大于5该密钥失效。鉴于之前老板先前待我还可以,就当还个人情,帮他完成该需求。先前做过Unity的扫码的客户端,也有记录过相关文章(http://blog.csdn.net/dingxiaowei2013/article/details/25086835)。这里就简单记录一下开发流程。

    一、数据库表的设计


    canbeuse bool值标记该二维码密钥是否失效,当然我下面T-SQL写的逻辑是当该密钥失效直接删除该密钥信息,所以该字段就没多大意义,以备有需要时使用!

    二、存储过程(T-SQL)设计

    -------------------校验qrcode是否可用存储过程----------------------------------
    alter PROCEDURE searchproc
    @qrcodetext nvarchar(50),
    @result bit output
    AS
    begin
    declare @count int, @selectrows int
    select * from dbo.QRCodeTB where qrcodetext = @qrcodetext;
    set @selectrows = @@ROWCOUNT
    if @selectrows > 0
    	begin 
    		select @count = cast(usednum as int) from dbo.QRCodeTB where qrcodetext = @qrcodetext;
    		if @count < 5 
    			begin
    				set @count = @count + 1
    				update dbo.QRCodeTB set usednum = @count where qrcodetext = @qrcodetext
    				set @result = 1
    			end
    		else
    			begin
    				--update dbo.QRCodeTB set canbeuse = 0 where qrcodetext = @qrcodetext
    				delete from dbo.QRCodeTB where qrcodetext = @qrcodetext
    				set @result=0
    			end
    	end
    else
    	begin
    		set @result = 0
    	end
    end
    GO
    -----------------------------执行验证-------------------------------------
    declare @result bit
    exec searchproc 'ED81D6FF-86A3-49C1-BF40-1A05521803DC',@result output;
    select @result
    
    select * from dbo.QRCodeTB
    
    --------------------------------添加记录存储过程--------------------
    alter PROCEDURE insertoneinfoproc
    @num int,
    @count int output
    AS
    begin
    while @num > 0
    	begin
    		insert into dbo.QRCodeTB(qrcodetext,canbeuse,usednum) values(NEWID(),1,0)
    		set @num = @num - 1
    	end
    	set @count = @@ROWCOUNT
    end
    go
    declare @count int
    exec insertoneinfoproc 1,@count output ;
    select @count;
    select * from dbo.QRCodeTB
    
    -------------------------添加数据--------------------------------------------------
    insert into dbo.QRCodeTB(qrcodetext,canbeuse,usednum) values(NEWID(),1,0)
    -------------------------查询数据------------------------------------------
    select * from dbo.QRCodeTB
    -------------------------清空数据表--------------------------------------
    Truncate Table dbo.QRCodeTB
    存储过程执行结果:

    连续运行五次之后:


    显示该密钥不可使用。貌似之前都一直没尝试过写T-QSL,这也算我第一次尝试写这么长的sql,在大神眼里这太小菜了哈!

    web端设计

    web采用的是.net一般处理程序

    1.webconfig数据库信息配置


    2.简单的sqlhelper类

    using System.Configuration;
    using System.Data;
    using System.Data.SqlClient;
    
    namespace SQLHelper
    {
        class SQLHelper
        {
            private static readonly string connectstr = ConfigurationManager.ConnectionStrings["SqlConnStr"].ConnectionString;
            public static SqlConnection CreateConnection()
            {
                SqlConnection conn = new SqlConnection(connectstr);
                conn.Open();
                return conn;
            }
            public static int ExecuteNonQuery(SqlConnection conn, string sql, params SqlParameter[] parameters)
            {
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = sql;
                    cmd.Parameters.AddRange(parameters);
                    return cmd.ExecuteNonQuery();
                }
            }
            public static int ExecuteNonQuery(string sql,params SqlParameter[] parameters)
            {
                using (SqlConnection conn = CreateConnection())
                {
                    using (SqlCommand cmd = conn.CreateCommand())
                    {
                        cmd.CommandText = sql;
                        cmd.Parameters.AddRange(parameters);
                        return cmd.ExecuteNonQuery();
                    }
                }
            }
            public static int ExecuteNonQuery(string sql, CommandType type, params SqlParameter[] parameters)
            {
                using (SqlConnection conn = CreateConnection())
                {
                    using (SqlCommand cmd = conn.CreateCommand())
                    {
                        cmd.CommandText = sql;
                        cmd.CommandType = type;
                        cmd.Parameters.AddRange(parameters);
                        return cmd.ExecuteNonQuery();
                    }
                }
            }
            /// <summary>
            /// 执行带输入输出参数的存储过程
            /// </summary>
            /// <returns></returns>
            public static string ExecuteNonQuery(string procname,  int outputindex, params SqlParameter[] parameters)
            {
                using (SqlConnection conn = CreateConnection())
                {
                    using (SqlCommand cmd = conn.CreateCommand())
                    {
                        cmd.CommandText = procname;
                        cmd.CommandType = CommandType.StoredProcedure;
                        cmd.Parameters.AddRange(parameters);
                        int executeEffectNum = cmd.ExecuteNonQuery();
                        return parameters[outputindex].Value.ToString(); //返回第一个输出参数
                    }
                }
            }
            public static object ExecuteScalar(SqlConnection conn, string sql, params SqlParameter[] parameters)
            {
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = sql;
                    cmd.Parameters.AddRange(parameters);
                    return cmd.ExecuteScalar();
                }
            }
            public static object ExecuteScalar(string sql, params SqlParameter[] parameters)
            {
                using (SqlConnection conn = CreateConnection())
                {
                    return ExecuteScalar(conn, sql, parameters);
                }
            }
            public static DataTable ExecuteQuery(SqlConnection conn, string sql, params SqlParameter[] parameters)
            {
                DataTable table = new DataTable();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = sql;
                    cmd.Parameters.AddRange(parameters);
                    using (SqlDataReader reader = cmd.ExecuteReader())
                    {
                        table.Load(reader);
                    }
                    return table;
                }
            }
            public static DataTable ExecuteQuery(string sql, params SqlParameter[] parameters)
            {
                using (SqlConnection conn = CreateConnection())
                {
                    return ExecuteQuery(conn, sql, parameters);
                }
            }
        }
    }

    3.二维码生成


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using SQLHelper;
    using System.Data;
    using System.Data.SqlClient;
    using ThoughtWorks.QRCode.Codec;
    using System.IO;
    using System.Text;
    
    namespace WebApplication
    {
        public partial class CreateQRCode : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
    
            }
    
            /// <summary>
            /// 创建一个二维码密钥
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            protected void CraeteQRCodeBtn_Click(object sender, EventArgs e)
            {
                string path = Server.MapPath("~/images" + "//qrpngfile");
                string name = "QRCode";
                //创建文件夹
                Directory.CreateDirectory(path);
                string sql = "select top 1 qrcodetext from dbo.QRCodeTB";
                string qrcode = SQLHelper.SQLHelper.ExecuteScalar(sql).ToString();
                if (!string.IsNullOrEmpty(qrcode) && !createImage(qrcode, path, name))
                {
                    Label1.Text = name + "已经存在";
                }
            }
    
            /// <summary>
            /// 向数据库添加一条二维码记录
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            protected void CreateUIDBtn_Click(object sender, EventArgs e)
            {
                int num = 1;
                SqlParameter[] paras ={  
                                         new SqlParameter("@num",SqlDbType.Int,1){
                                             Value=1
                                         },   new SqlParameter("@count", SqlDbType.Int),
                                     };
                paras[1].Direction = ParameterDirection.Output;
                this.Label1.Text = "开始执行";
                int rowseffect = SQLHelper.SQLHelper.ExecuteNonQuery("insertoneinfoproc", CommandType.StoredProcedure, paras);
                if (rowseffect > 0)
                    this.Label1.Text = "插入成功";
                else
                    this.Label1.Text = "插入失败";
            }
    
            #region 生成二维码
            /// <summary>
            /// 生成二维码
            /// </summary>
            /// <param name="path">地址</param>
            /// <param name="name">图片名称</param>
            /// <returns>bool</returns>
            public bool createImage(string value, string path, string name)
            {
                QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
                //设置背景颜色
                //qrCodeEncoder.QRCodeBackgroundColor = Color.FromArgb(255, 255, 0);
                //设置前景色
                //qrCodeEncoder.QRCodeForegroundColor = Color.GreenYellow;
                //编码格式
                qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
    
                //设置每个二维码像素点的大小
                qrCodeEncoder.QRCodeScale = 4;
                //QR码版本
                //QR码所允许规格系列为21×21模块(版本1)~177×177模块(版本40)
                qrCodeEncoder.QRCodeVersion = 8;
                //纠错等级
                //level L : 最大 7% 的错误能够被纠正; 
                //level M : 最大 15% 的错误能够被纠正;  
                //level Q : 最大 25% 的错误能够被纠正;  
                //level H : 最大 30% 的错误能够被纠正;
                qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
    
                //自定义的二维码数据
                String data = value;
                //Response.Write(data);
                //画图
                System.Drawing.Bitmap image = qrCodeEncoder.Encode(data);
    
                System.IO.MemoryStream MStream = new System.IO.MemoryStream();
    
                image.Save(MStream, System.Drawing.Imaging.ImageFormat.Png);
    
                //Response.ClearContent();
    
                Response.ContentType = "image/Png";
                //写图片到页面
                Response.BinaryWrite(MStream.ToArray());
                path = path + "\\" + name + ".png";
                if (!File.Exists(path))
                {
                    FileStream fs = new FileStream(path, FileMode.CreateNew, FileAccess.ReadWrite);
                    BinaryWriter bw = new BinaryWriter(fs, UTF8Encoding.UTF8);
                    byte[] by = MStream.ToArray();
                    for (int i = 0; i < MStream.ToArray().Length; i++)
                        bw.Write(by[i]);
                    fs.Close();
                    return true;
                }
                else
                    return false;
            }
            #endregion
        }
    }

    4.二维码验证

    这里采用的是get请求方式,方便测试,安全起见最好用post请求

    using System.Data;
    using System.Data.SqlClient;
    using System.Web;
    
    namespace WebApplication
    {
        /// <summary>
        /// CheckCode 的摘要说明
        /// </summary>
        public class CheckCode : IHttpHandler
        {
    
            public void ProcessRequest(HttpContext context)
            {
                context.Response.ContentType = "text/plain";
                //context.Request.Form["codetext"];//post
                string codetext = context.Request.QueryString["codetext"];  //get
                if (codetext != null)
                {
                    SqlParameter[] parameters = {
                        new SqlParameter("@qrcodetext", SqlDbType.NVarChar,50),
                        new SqlParameter("@result", SqlDbType.Bit),
                    };
                    parameters[0].Value = codetext;
                    parameters[1].Direction = ParameterDirection.Output;
                    int outputindex = 1;
                    string resNum = SQLHelper.SQLHelper.ExecuteNonQuery("searchproc", outputindex, parameters);
                    context.Response.Write(resNum);
                }
                else
                {
                    context.Response.Write("没有输入二维码信息");
                }
            }
    
            public bool IsReusable
            {
                get
                {
                    return false;
                }
            }
        }
    }

    web验证

    创建密钥二维码:

    点击生成密钥二维码

    服务器端密钥验证:

    当密钥使用五次之后,返回给客户端的是false结果,也就是密钥已失效,同事服务器做的就是从数据库表中删除带密钥信息!



    关于Unity扫码客户端的就不记录了,之前有过相关记载,就主要用到www提交表单,还有扫码插件制作(请看下面相关连接有记载),其他就没啥了。天色已晚,承诺某人今天早点睡的,貌似又食言了,sorry!貌似这两周都睡的比较晚,明天周末了,好好补一觉!

    相关连接:

    C#/.NET存储过程:http://www.cnblogs.com/clhed/articles/1269415.html

    扫描二维码客户端:http://blog.csdn.net/dingxiaowei2013/article/details/25086835

    Unity跟服务器交互(表单提交):http://blog.csdn.net/dingxiaowei2013/article/details/17115489


    Unity客户端效果:



    ==================== 迂者 丁小未 CSDN博客专栏=================

    MyBlog:http://blog.csdn.net/dingxiaowei2013             MyQQ:1213250243

    Unity QQ群:375151422         cocos2dx QQ群:280818155

    ====================== 相互学习,共同进步 ===================


    展开全文
  • 获取ACCESS2000密码 [C#]

    千次阅读 2005-07-08 13:52:00
    Access2000版本为例,从42H字节开始的后40字节为unicode存储的密码信息,与字节组0x0b,0x6d ,0xec ,0x37 ,0xd0 ,0xd2 ,0x9c ,0xfa ,0x4b ,0xc8 ,0x28 ,0xe6 ,0x9e ,0x20 ,0x8a ,0x60 ,0xd9 ,0x0

    Access 的一些早期版本使用异或方法进行简单加密,当忘记密码时可以用同样的办法进行恢复.

    以Access2000版本为例,从42H字节开始的后40字节为unicode存储的密码信息,与字节组

    0x0b,0x6d ,0xec ,0x37 ,0xd0 ,0xd2 ,0x9c ,0xfa ,0x4b ,0xc8 ,0x28 ,0xe6 ,0x9e ,0x20 ,0x8a ,

    0x60 ,0xd9 ,0x02 ,0x7b ,0x36 ,0x78 ,0xe4 ,0xdf ,0xb1 ,0xfa ,0x62 ,0x13 ,0x43 ,0x42 ,0x39 ,

    0xb1 ,0x33 ,0xb9 ,0xf7 ,0x79 ,0x5b ,0x1f ,0x23 ,0x7c ,0x2c

    异或后即可还原.上述密钥字节组可通过新建ACCESS文件后查看得知.

    Access是以轻量化为目的设计的数据库,在重要应用中应该采用更专业的数据库产品,如Microsoft SQL Server.

    以下以C#为例,说明获取Access2000密码的方法. 注意:解密结果应用Unicode解码输出,以保证正常显示.

    using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;

    namespace WindowsApplication1
    {
     /// <summary>
     /// Form1 的摘要说明。
     /// </summary>
     public class Form1 : System.Windows.Forms.Form
     {
      private System.Windows.Forms.Button button1;
      private System.Windows.Forms.TextBox textBox1;
      private System.Windows.Forms.Button button2;
      private System.Windows.Forms.TextBox textBox2;
      private System.Windows.Forms.OpenFileDialog openFileDialog1;
      /// <summary>
      /// 必需的设计器变量。
      /// </summary>
      private System.ComponentModel.Container components = null;

      public Form1()
      {
       //
       // Windows 窗体设计器支持所必需的
       //
       InitializeComponent();

       //
       // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
       //
      }

      /// <summary>
      /// 清理所有正在使用的资源。
      /// </summary>
      protected override void Dispose( bool disposing )
      {
       if( disposing )
       {
        if (components != null)
        {
         components.Dispose();
        }
       }
       base.Dispose( disposing );
      }

      #region Windows Form Designer generated code
      /// <summary>
      /// 设计器支持所需的方法 - 不要使用代码编辑器修改
      /// 此方法的内容。
      /// </summary>
      private void InitializeComponent()
      {
       this.button1 = new System.Windows.Forms.Button();
       this.textBox1 = new System.Windows.Forms.TextBox();
       this.button2 = new System.Windows.Forms.Button();
       this.textBox2 = new System.Windows.Forms.TextBox();
       this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
       this.SuspendLayout();
       //
       // button1
       //
       this.button1.Location = new System.Drawing.Point(24, 80);
       this.button1.Name = "button1";
       this.button1.Size = new System.Drawing.Size(232, 88);
       this.button1.TabIndex = 0;
       this.button1.Text = "解";
       this.button1.Click += new System.EventHandler(this.button1_Click);
       //
       // textBox1
       //
       this.textBox1.Location = new System.Drawing.Point(24, 16);
       this.textBox1.Name = "textBox1";
       this.textBox1.ReadOnly = true;
       this.textBox1.Size = new System.Drawing.Size(376, 21);
       this.textBox1.TabIndex = 1;
       this.textBox1.Text = "";
       //
       // button2
       //
       this.button2.Location = new System.Drawing.Point(408, 16);
       this.button2.Name = "button2";
       this.button2.Size = new System.Drawing.Size(88, 24);
       this.button2.TabIndex = 2;
       this.button2.Text = "浏览";
       this.button2.Click += new System.EventHandler(this.button2_Click);
       //
       // textBox2
       //
       this.textBox2.Location = new System.Drawing.Point(24, 48);
       this.textBox2.Name = "textBox2";
       this.textBox2.Size = new System.Drawing.Size(272, 21);
       this.textBox2.TabIndex = 3;
       this.textBox2.Text = "";
       //
       // Form1
       //
       this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
       this.ClientSize = new System.Drawing.Size(640, 181);
       this.Controls.AddRange(new System.Windows.Forms.Control[] {
                        this.textBox2,
                        this.button2,
                        this.textBox1,
                        this.button1});
       this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
       this.Name = "Form1";
       this.Text = "解";
       this.ResumeLayout(false);

      }
      #endregion

      /// <summary>
      /// 应用程序的主入口点。
      /// </summary>
      [STAThread]
      static void Main()
      {
       Application.Run(new Form1());
      }

      private void button2_Click(object sender, System.EventArgs e)
      {
       if(this.openFileDialog1.ShowDialog()==System.Windows.Forms.DialogResult.OK)
       {
        this.textBox1.Text=this.openFileDialog1.FileName;
        this.textBox2.Text ="";
       }
      }

      private void button1_Click(object sender, System.EventArgs e)
      {
      
               
       
       try
       {
        this.textBox2.Text =getPassWord2000(this.textBox1.Text);
       }
       catch(System.Exception ee)
       {
        System.Windows.Forms.MessageBox.Show(ee.Message);
       }


      }

      //
      public static string getPassWord2000(string FilePath)
      {
       byte[] key={0x0b,0x6d ,0xec ,0x37 ,0xd0 ,0xd2 ,0x9c ,0xfa ,0x4b ,0xc8 ,0x28 ,0xe6 ,0x9e ,0x20 ,0x8a ,0x60 ,0xd9 ,0x02 ,0x7b ,0x36 ,0x78 ,0xe4 ,0xdf ,0xb1 ,0xfa ,0x62 ,0x13 ,0x43 ,0x42 ,0x39 ,0xb1 ,0x33 ,0xb9 ,0xf7 ,0x79 ,0x5b ,0x1f ,0x23 ,0x7c ,0x2c};

       string result="";
               
       System.Exception ex;
       try
       {
        if(FilePath.Trim()=="")
        {
         ex=new Exception("未选定文件");
        }
        else if(System.IO.File.Exists(FilePath.Trim()))
        {
         ex=new Exception("文件不存在");
        }
       

        System.IO.BinaryReader br=new System.IO.BinaryReader(new System.IO.FileStream(FilePath.Trim(),System.IO.FileMode.Open));
        byte[] db=new byte[40];
        int ix=0;
        while((ix++)<0x42)
        {
         br.ReadByte();
        }
       
        db=br.ReadBytes(40);
         
        br.Close();

       
        for(int i=0;i<40;i++)
        {
        
         byte b=(byte)(db[i]^key[i]);
         db[i]=b;
                       
        }
       
        System.IO.MemoryStream m=new System.IO.MemoryStream(db,0,40,false,true);
       
       

        System.IO.StreamReader s=new System.IO.StreamReader(m,System.Text.Encoding.Unicode);    
               
       

        result =s.ReadToEnd();

       
        s.Close();
        m.Close();

       }
       catch(System.Exception ee)
       {
        throw ee;
       }

       return result;
      }

     }
    }

    展开全文
  • KNIME数据库扩展指南

    2021-03-17 21:26:49
    KNIME数据库扩展指南 介绍 KNIME数据库扩展提供了一组KNIME节点,这些节点允许连接到JDBC兼容的数据库。这些节点位于“节点存储库”中的“*数据库”*类别中,您可以在其中找到许多数据库访问,操作和编写节点。 ...

    KNIME数据库扩展指南


    介绍

    KNIME数据库扩展提供了一组KNIME节点,这些节点允许连接到JDBC兼容的数据库。这些节点位于“节点存储库”中的“*数据库”*类别中,您可以在其中找到许多数据库访问,操作和编写节点。

    数据库节点是每个KNIME Analytics Platform安装的一部分。不需要安装任何其他的KNIME扩展。

    本指南描述了KNIME数据库扩展,并除其他外,展示了如何连接到数据库以及如何在数据库内部执行数据操作。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vKRwmO0Z-1615987554128)(C:\Users\nn\Desktop\FaceImage\010_overviewdb.png)]

    图1.使用数据库节点的示例工作流程

    端口类型

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BYM7lmKC-1615987554143)(https://docs.knime.com/2020-12/db_extension_guide/img/010_port.PNG)]

    图2.两种类型的数据库端口

    数据库扩展中有两种类型的端口:“数据库连接”端口(红色)和“数据库数据”端口(深红色)。

    DB连接有关当前DB会话,端口存储信息,例如数据类型,连接属性,JDBC性能,驱动器信息等

    DB数据端口不仅包含DB会话,还DB数据对象,这是一个SQL查询描述。

    出口视图

    执行数据库节点后,您可以在输出视图中检查结果,方法是右键单击该节点,然后在菜单底部选择要检查的输出。有关如何执行节点的更多信息,请参阅《 快速入门指南》

    数据库连接输出视图

    数据库连接的输出视图具有“*数据库会话”*选项卡,其中包含有关当前数据库会话的信息,例如数据库类型和连接URL。

    数据库数据输出视图

    当执行具有DB数据输出端口的数据库操作节点(例如DB GroupBy节点)时,该节点要做的是构建必要的SQL查询以执行用户选择的GroupBy操作并将其转发到工作流中的下一个节点。它实际上并不执行查询。但是,可以通过DB Data Outport视图检查中间结果的子集。除了有关数据库会话的信息外,数据库数据输出视图还包含输出数据的预览和说明。

    出口视图中的“表预览”选项卡在开始处显示一个空表。单击缓存号。行数: 将执行中间SQL查询并缓存输出的子集,然后将其显示在输出视图中。默认情况下,仅前100行被缓存,但是您可以在顶部设置自己的值。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jWmtl68H-1615987554163)(https://docs.knime.com/2020-12/db_extension_guide/img/010_outport-cache.PNG)]

    图3.带有检索到的行的DB Outport视图

    根据SQL查询的复杂性,缓存前100行可能会花费很长时间。

    可以在“*数据库规范”*选项卡中检查表规范。它包含表中的列的列表,以及它们的数据库类型和相应的KNIME数据类型(有关数据库类型和KNIME类型之间的类型映射的更多信息,请参阅“类型映射”部分。为了获取表规范,则仅在节点的配置过程中或执行期间执行仅获取元数据而不查询数据本身的查询,可以通过连接器节点的“高级”选项卡禁用在配置过程中执行元数据查询。

    “*数据库查询”*选项卡包含中间SQL查询,该查询定义了此出口处的数据。该查询由在前面的数据库节点中创建的查询组成,并且仅当您想在KNIME数据表中(例如,使用DB Reader节点)检索结果时才执行查询。

    会话处理

    数据库会话生命周期由连接器节点管理。执行连接器节点将创建一个数据库会话,而重置该节点或关闭工作流程将破坏相应的数据库会话。

    连接到数据库

    节点存储库中的DB连接子类别包含

    • 一组用于特定数据库的特定于数据库的连接器节点,例如Microsoft SQL Server,MySQL,PostgreSQL,H2等。
    • 以及通用的数据库连接器节点。

    连接器节点通过其JDBC驱动程序创建与数据库的连接。在连接器节点的配置对话框中,您需要提供信息,例如数据库类型,数据库的位置以及身份验证方法(如果可用)。

    特定于数据库的连接器节点已经包含必需的JDBC驱动程序,并提供了针对特定数据库量身定制的配置对话框。 如果可能,建议在通用DB连接器节点上使用这些节点。

    连接到预定义的数据库

    以下是一些具有自己专用的连接器节点的数据库:

    • 亚马逊Redshift
    • 亚马逊雅典娜
    • Google BigQuery
    • H2
    • 微软Access
    • Microsoft SQL服务器
    • 的MySQL
    • 甲骨文
    • PostgreSQL的
    • SQLite的
    • Vertica
    由于许可限制,某些专用的连接器节点(例如Oracle或Amazon Redshift)没有JDBC驱动程序。如果要使用这些节点,则需要首先注册相应的JDBC驱动程序。请参阅“注册自己的JDBC驱动程序”部分,以了解如何注册自己的驱动程序。对于Amazon Redshift,请参阅“ 第三方数据库驱动程序插件”部分。

    如果您的数据库不存在专用的连接器节点,则可以使用通用的数据库连接器节点。有关此的更多信息,请参阅“连接到其他数据库”部分。

    找到数据库的正确连接器节点后,双击该节点以打开配置对话框。在“*连接设置”*窗口中,您可以提供数据库的基本参数,例如数据库类型,方言,位置或身份验证。然后单击“*确定”*并执行该节点以建立连接。

    KNIME Analytics Platform通常提供以下三种不同类型的连接器节点 :基于文件的连接器节点基于服务器的连接器节点通用连接器节点,以下各对此进行了说明。

    基于文件的连接器节点

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7ZMl0Y8t-1615987554189)(https://docs.knime.com/2020-12/db_extension_guide/img/020_h2.PNG)]图4. H2连接器配置对话框左侧的图显示了基于文件的数据库(例如SQLite,H2或MS Access)的节点对话框的示例。最重要的节点设置如下所述:配置:在配置窗口中,您可以选择注册的数据库方言和驱动程序。位置:数据库的位置。您可以提供现有数据库的路径,也可以选择 在内存中创建一个临时数据库,如果该数据库支持此功能,则该数据库将保留在内存中。

    基于服务器的连接器节点

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RKJjanqp-1615987554195)(https://docs.knime.com/2020-12/db_extension_guide/img/020_mssqlserver.PNG)]图5. MS SQL Server连接器配置对话框左侧的图显示了基于服务器的数据库(例如MySQL,Oracle或PostgreSQL)的节点对话框的示例。最重要的节点设置如下所述。配置:在配置窗口中,您可以选择注册的数据库方言和驱动程序。位置:数据库的位置。您应该提供托管数据库的计算机的主机名和端口,以及数据库的名称,数据库名称可能是可选的,具体取决于数据库。身份验证:登录凭据可以通过凭据流变量提供,也可以直接在配置对话框中以用户名和密码的形式提供。还为支持此功能的数据库(例如Hive或Impala)提供Kerberos身份验证。有关Kerberos身份验证的更多信息,请参考《Kerberos用户指南》
    有关“ JDBC参数和高级”选项卡的更多信息,请参考“ JDBC参数高级”选项卡部分。“类型映射”选项卡在“类型映射”部分中进行了说明。

    第三方数据库驱动程序插件

    如前所述,专用于数据库的专用连接器节点已经包含必需的JDBC驱动程序。但是,某些数据库需要特殊的许可,这使我们无法自动安装甚至将必要的JDBC驱动程序与相应的连接器节点捆绑在一起。例如,KNIME提供了其他插件来安装需要特殊许可证的 正式Microsoft SQL Server驱动程序Amazon Redshift驱动程序

    要安装插件,进入文件安装KNIME扩展…。在“*安装”*窗口中,搜索所需的驱动程序(MS SQL Server或Redshift),您将看到类似于下图的内容。然后选择插件进行安装。如果在此窗口中看不到该插件,则说明该插件已安装。安装插件后,重新启动KNIME。之后,当打开专用连接器节点的配置对话框时,应该在驱动程序名称列表中看到相应数据库的已安装驱动程序可用。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0Ehmoi1u-1615987554197)(https://docs.knime.com/2020-12/db_extension_guide/img/02_driver_marker.PNG)]

    图6.安装窗口

    连接到其他数据库

    通用数据库连接器节点可以连接到任何兼容JDBC的数据库。最重要的节点设置如下所述。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uU3KOPyn-1615987554204)(https://docs.knime.com/2020-12/db_extension_guide/img/020_dbconnector.PNG)]

    图7.数据库连接器配置对话框

    数据库类型:选择节点将连接到的数据库的类型。例如,如果数据库是PostgreSQL派生数据库,则选择Postgres作为数据库类型。如果您不知道类型,请选择默认类型。

    数据库方言:选择定义SQL语句生成方式的数据库方言。

    驱动程序名称:为您的特定数据库选择适当的驱动程序。如果没有匹配的JDBC驱动程序,则首先需要对其进行注册,请参阅注册您自己的JDBC驱动程序。仅已为所选数据库类型注册的驱动程序可供选择。

    数据库URL:特定于驱动程序的JDBC URL。在占位符中输入数据库信息,例如主机,端口和数据库名称。

    身份验证:登录凭据可以通过凭据流变量提供,也可以直接在配置对话框中以用户名和密码的形式提供。还为支持此功能的数据库(例如Hive或Impala)提供Kerberos身份验证。有关Kerberos身份验证的更多信息,请参考《Kerberos用户指南》

    所选的数据库类型和方言确定支持哪些数据类型,语句(例如插入,更新和聚合功能)。

    如果在连接第三方数据库时遇到错误,则可以在“高级”选项卡中启用JDBC记录器选项 。如果启用此选项,则所有JDBC操作都将写入KNIME日志中,这可能有助于您识别问题。为了调整KNIME与数据库的交互方式,例如引号标识符,您可以根据数据库的设置在“高级”选项卡下更改默认设置。例如,KNIME使用“作为默认标识符引用,某些数据库(例如Informix)默认不支持。要解决此问题,只需在Advanced Tab中更改或删除标识符定界符设置的值即可。

    注册自己的JDBC驱动程序

    对于某些数据库,KNIME Analytics Platform不包含现成的JDBC驱动程序。在这些情况下,必须首先在KNIME Analytics Platform中注册特定于供应商的JDBC驱动程序。请咨询您的数据库供应商以获取JDBC驱动程序。可以在下面找到一些最受欢迎的JDBC驱动程序的列表。

    JDBC驱动程序必须符合 JDBC 4.1JDBC 4.2

    要在KNIME Server上设置JDBC驱动程序,请参阅KNIME Server上的JDBC驱动程序部分。

    要注册特定于供应商的JDBC驱动程序,请转至文件首选项KNIME数据库

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mYQY2BKb-1615987554206)(https://docs.knime.com/2020-12/db_extension_guide/img/020_adddriver.PNG)]

    图8. DB Preference页面

    单击添加将打开一个新的数据库驱动程序窗口,您可以在其中提供JDBC驱动程序路径和所有必要的信息,例如:

    • ID:JDBC驱动程序的唯一ID,仅由字母数字字符和下划线组成。

    • Name:JDBC驱动程序的唯一名称。

    • 数据库类型:数据库类型。如果选择特定的数据库类型(例如MySQL),则可以在专用连接器节点(例如MySQL Connector)中选择驱动程序。但是,如果数据库不在列表中,则可以选择default,这将为您提供Advanced Tab中的所有可用参数。注册为默认类型的驱动程序仅在通用DB连接器节点中可用。

    • 说明:JDBC驱动程序的可选说明。

    • URL模板:专用连接器节点中使用的JDBC驱动程序连接URL格式。如果您在数据库类型中选择了默认数据库以外的其他数据库,则将使用所选数据库的默认模板来预设URL模板。请参阅下面的“ URL模板”语法信息或“ JDBC URL模板”部分以获取更多信息。

    • URL模板语法信息:单击问号将打开一个信息框,其中提供了有关URL模板语法的一般信息。此外,如果在“数据库类型”中选择默认数据库以外的数据库,则会为所选数据库类型提供一个或多个可能的URL模板示例,您可以在URL模板字段中复制和粘贴这些示例 。

    • Classpath:JDBC驱动程序的路径。如果驱动程序以单个.jar文件形式提供,则单击添加文件;如果驱动程序以包含多个.jar文件的文件夹形式提供,则 单击添加**目录。一些供应商提供.zip文件供下载,需要首先将其解压缩到文件夹中。

    如果JDBC驱动程序需要本机库(例如DLL),则除了JDBC驱动程序.jar文件外,还需要将它们全部放入一个文件夹中,然后通过“*添加目录”*按钮注册该文件夹。
    • 驱动程序类:单击查找驱动程序类将自动检测JDBC驱动程序类和版本。单击按钮后,请选择适当的班级。
    如果您的数据库在“数据库类型”下拉列表中可用,则最好选择它而不是将其设置为default。将数据库类型设置为默认值将允许您仅使用通用DB连接器节点连接到数据库,即使该数据库有专用的连接器节点也是如此。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ikg2jNC5-1615987554208)(https://docs.knime.com/2020-12/db_extension_guide/img/020_adddriver2.PNG)]

    图9.注册新的数据库驱动程序窗口

    KNIME Server可以自动将JDBC驱动程序分发给所有连接的KNIME Analytics Platform客户端(请参阅KNIME Server上的JDBC驱动程序)。

    JDBC URL模板

    注册JDBC驱动程序时,需要指定其JDBC URL模板,专用的Connector节点将使用该模板创建最终数据库URL。例如,jdbc:oracle:thin:@<host>:<port>/<database>Oracle瘦驱动程序的有效驱动程序URL模板 。对于大多数数据库,您不必自己查找合适的URL模板,因为 URL模板语法信息至少为数据库提供了一个URL模板示例。

    在URL模板中的变量,例如的值<host><port>或者<database>可以在相应的连接器节点的配置对话框中指定。

    代币:

    • 强制值(例如<database>:引用的令牌必须具有非空白值。括号之间的名称必须是有效的令牌名称(有关支持的令牌的列表,请参阅下文)。
    • 可选值(例如[database]:引用的令牌可能具有空白值。括号之间的名称必须是有效的令牌名称(有关支持的令牌的列表,请参阅下文)。
    • 条件(例如[location=in-memory?mem:<database>]:这适用于基于文件的数据库,例如H2或SQLite。?如果条件为真,则第一个字符将条件与仅包含在URL中的内容分开。当前唯一可用的显式运算符是=,以测试变量的确切值。左边的操作数必须是有效的变量名,右边的操作数是变量要包含的内容所必需的值。内容可能包括强制性令牌和/或可选令牌(<database>/[database]),但没有条件部分。也可以测试是否存在变量。为此,请指定变量名称(例如数据库)作为条件。例如jdbc:mydb://<host>:<port>[database?/databaseName=<database>]将导致 jdbc:mydb://localhost:10000/databaseName=db1如果在节点对话框中指定了数据库名称,则为jdbc:mydb://localhost:10000

    对于基于服务器的数据库,应使用以下令牌:

    • host连接器节点的“*连接设置”*选项卡上“主机名”字段的值。
    • port连接器节点的“*连接设置”*选项卡上“端口”字段的值。
    • database连接器节点的“*连接设置”*选项卡上“数据库名称”字段的值。

    对于基于文件的数据库,应使用以下令牌:

    • location连接器节点的“连接设置”选项卡上的“位置选项。文件值对应于选中Path旁边的单选按钮,内存对应于In-memory旁边的单选按钮。该变量只能在条件中使用。
    • file连接器节点的“*连接设置”*选项卡上“*路径”*字段的值。仅当location的值为时,此变量才有效。file
    • database连接器节点的“*连接设置”选项卡上的“**内存中”*字段的值。仅当location的值为时,此变量才有效。in-memory
    连接器节点的配置对话框中的字段验证取决于引用它们的(包含的)令牌是强制性的还是可选的(请参见上文)。

    常见的JDBC驱动程序列表

    以下是一些常用数据库驱动程序的选定列表,您可以在其中添加其他数据库驱动程序到KNIME Analytics Platform:

    上面的列表仅显示了可以添加的数据库驱动程序的一些示例。如果您的驱动程序不在上面的列表中,仍然可以将其添加到KNIME Analytics Platform。

    高级数据库选项

    JDBC参数

    JDBC参数允许您定义自定义JDBC驱动程序连接参数。参数的值可以是常量,变量,凭证用户,凭证密码或KNIME URL。有关支持的连接参数的更多信息,请咨询您的数据库供应商。

    下图显示了具有不同变量类型的SSL JDBC参数的示例。您可以设置一个布尔值来启用或禁用SSL,也可以使用KNIME相对URL指向SSLTrustStore位置,或对trustStorePassword参数使用凭据输入。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-laEfvmqM-1615987554210)(https://docs.knime.com/2020-12/db_extension_guide/img/020_jdbcparam.PNG)]

    图10. JDBC Parameters选项卡

    进阶标签

    通过“*高级”*选项卡中的设置,您可以定义KNIME框架属性,例如连接处理,高级SQL方言设置或查询日志记录选项。在这里,您可以调整KNIME与数据库的交互方式,例如应如何创建发送到数据库的查询。在“*元数据”*部分中,您还可以在配置节点期间禁用元数据获取,或在这样做时更改超时,如果您连接到需要更多时间来计算所创建查询的元数据的数据库,或者您已连接,则可能有必要通过慢速网络访问它。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DXdexCU1-1615987554212)(https://docs.knime.com/2020-12/db_extension_guide/img/020_advanced.PNG)]

    图11.高级选项卡

    完整的可用选项描述如下:

    • 验证查询:要执行的验证连接可用的查询。如果未指定查询,则KNIME调用Connection.isValid() 方法来验证连接。仅检查错误,不需要结果。
    • CASE表达式:生成的语句中是否允许使用CASE表达式。
    • CREATE TABLE CONSTRAINT名称:是否可以在CREATE TABLE语句中为CONSTRAINT定义定义名称。
    • DROP TABLE语句:DROP TABLE语句是否是语言的一部分。
    • 派生表引用表引用是否可以派生表。
    • 从查询插入表:是否支持通过select语句插入表,例如INSERT INTO T1(C1)(SELECT C1 FROM T2)。
    • JDBC记录器:启用或禁用JDBC操作的记录器。
    • JDBC语句取消:取消节点执行时启用或禁用JDBC语句取消尝试。
    • 节点取消轮询间隔:两次检查节点执行是否已取消之间要等待的毫秒数。有效范围:[100,5000]。
    • 在configure中检索:在数据库节点的configure方法中启用或禁用检索元数据。
    • 检索配置超时:取消配置方法中的元数据检索之前要等待的时间间隔(以秒为单位)。有效范围:[1,)。
    • 事务:启用或禁用数据库事务,例如提交/回滚。如果您要连接的数据库(例如Google Big Query或Dremio)不支持事务,请禁用此选项。
    • CREATE“ temporary” TABLE语法:用于创建临时表的一个或多个关键字。
    • CREATE TABLE“如果不存在”的语法:表创建语句条件“如果不存在”的语法。如果为空,则不会自动创建此类语句,尽管节点仍可能无法从原子上实现相同的行为。
    • 提取大小:JDBC驱动程序的提示,当需要更多行时,应从数据库中获取行数。有效范围:[0,)。
    • 还原数据库连接:加载已执行的连接器节点时,启用或禁用数据库连接的还原。
    • 仅用空格分隔标识符:如果选中,则仅用空格分隔标识符,例如列或表名。
    • 标识符定界符(关闭):标识符的闭合定界符,例如列名和表名。
    • 标识符定界符(打开):标识符(例如列和表名*)的*打开定界符。
    • 替换标识符中的非单词字符:是否替换标识符中的非单词字符,例如表名或列名。非单词字符包括字母数字字符(az,AZ,0-9)和下划线(_)以外的所有字符。
    • 标识符非单词字符替换:启用标识符替换后,将替换标识符中的非单词字符。空值将删除非单词字符。
    • 表参考关键字表参考中相关名称之前的关键字。
    • 将JDBC参数附加到URL:启用或禁用将参数附加到JDBC URL,而不是将其作为属性传递。
    • 将用户名和密码附加到URL:启用或禁用将用户名和密码附加到JDBC URL,而不是将其作为属性传递。
    • JDBC URL初始参数分隔符:表示JDBC URL中参数开始的字符。
    • JDBC URL参数分隔符:在JDBC URL中分隔两个JDBC参数的字符。
    • JDBC URL的最后一个参数后缀:在JDBC URL的最后一个参数之后附加的字符。
    • 减号运算:是否支持减号设定操作。

    专用的数据库连接器(例如Microsoft SQL Server连接器)通常仅显示上述选项的子集,因为大多数选项是预定义的,例如数据库是否支持CASE语句等。

    例子

    在本节中,我们将提供有关如何连接到一些广为人知的数据库的示例。

    连接到Oracle

    第一步是获取Oracle JDBC驱动程序。然后转到文件首选项KNIME数据库,然后单击添加

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GPcblRod-1615987554214)(https://docs.knime.com/2020-12/db_extension_guide/img/020_driveroracle.PNG)]

    图12.注册新的Oracle驱动程序

    在新的数据库驱动程序窗口中,提供以下信息:

    • ID:Oracle,但是您可以输入自己的驱动程序ID,只要它仅包含字母数字字符和下划线即可。
    • 名称:Oracle,但是您可以输入自己的驱动程序名称。
    • 数据库类型:下拉列表中提供Oracle,因此数据库类型设置为oracle
    • 说明:例如,我的Oracle驱动程序。
    • URL模板:通过在“数据库”类型中选择oracle,URL模板将自动预设为Oracle的默认JDBC URL模板(服务名),即。有关更多可能的模板,只需单击下面的URL模板语法信息。请参阅“ JDBC URL模板”部分,以获取有关支持的令牌(例如主机,端口和数据库)的更多信息。jdbc:oracle:thin:@<host>:<port>/<database>
    • 类路径:单击添加文件以添加Oracle JDBC驱动程序文件。驱动程序文件的路径将出现在Classpath区域中。
    • 驱动程序类:单击“查找驱动程序类”将自动检测所有可用的JDBC驱动程序类和版本,在本例中为版本12.2.0中的oracle.jdbc.OracleDriver

    填写所有信息后,单击“确定”,新添加的驱动程序将出现在数据库驱动程序首选项表中。单击“*应用并关闭”*以应用更改,您可以开始连接到Oracle数据库。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ABnDwYlo-1615987554218)(https://docs.knime.com/2020-12/db_extension_guide/img/020_driveroracle2.PNG)]

    图13.数据库首选项页面

    Oracle有一个专用的连接器节点,称为Oracle连接器,有关如何使用专用连接器节点进行连接的信息,请参阅连接到预定义的数据库

    连接到Databricks

    要连接到Databricks,您需要安装 KNIME Databricks Integration

    下一步是从官方网站下载Databricks Simba JDBC驱动程序 到您的计算机。然后转到文件首选项KNIME数据库,然后单击添加

    KNIME为Databricks提供了Apache Hive JDBC驱动程序,您可以将其用作后备驱动程序。但是强烈建议使用上面链接中提供的官方JDBC驱动程序。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DuWyLkkH-1615987554220)(https://docs.knime.com/2020-12/db_extension_guide/img/020_driverdatabricks.PNG)]

    图14.注册新的Databricks驱动程序

    在新的数据库驱动程序窗口中,提供以下信息:

    • ID:Databricks,但是您可以输入自己的驱动程序ID,只要它仅包含字母数字字符和下划线即可。
    • 名称:Databricks,但是您可以输入自己的驱动程序名称。
    • 数据库类型:下拉列表中提供了Databricks,因此数据库类型设置为databricks
    • 说明:例如,我的Databricks驱动程序。
    • URL模板:通过在“数据库”类型中选择databrick,URL模板将自动预设为Databricks的默认JDBC URL模板,即。有关更多可能的模板,只需单击下面的URL模板语法信息。请参阅“ JDBC URL模板”部分,以获取有关支持的令牌(例如主机,端口和数据库)的更多信息。jdbc:spark://<host>:<port>/default
    • 类路径:单击添加文件以添加Databricks JDBC驱动程序文件。驱动程序文件的路径将出现在Classpath区域中。
    • 驱动程序类:单击“查找驱动程序类”将自动检测所有可用的JDBC驱动程序类和版本,在本例中为2.6.0版本中的com.simba.spark.jdbc4.Driver

    填写所有信息后,单击“确定”,新添加的驱动程序将出现在数据库驱动程序首选项表中。单击“*应用并关闭”*以应用更改。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8NpwcUEA-1615987554222)(https://docs.knime.com/2020-12/db_extension_guide/img/020_driverdatabricks2.PNG)]

    图15.数据库首选项页面

    要连接到Databricks,您需要首先创建一个连接到现有Databricks集群的Databricks环境。为此,请使用“*创建Databricks环境”*节点。在配置窗口中,您需要提供:

    在“数据库端口” →“*驱动程序”*选项卡中,可以选择驱动程序名称,在本例中为我们之前注册的Databricks Simba JDBC驱动程序。

    对于身份验证,Databricks强烈建议使用令牌。请参阅Databricks AWSAzure 文档中的身份验证以获取有关个人访问令牌的更多信息。

    连接到Google BigQuery

    要连接到BigQuery,您需要安装 KNIME BigQuery Extension

    由于许可证限制,BigQuery JDBC驱动程序不是KNIME Analytics Platform的一部分,需要单独下载和注册。要下载BigQuery JDBC驱动程序,请访问 官方网站。然后转到文件首选项KNIME数据库,然后单击添加

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jTtGRlNS-1615987554224)(https://docs.knime.com/2020-12/db_extension_guide/img/020_driverbigquery.PNG)]

    图16.注册新的BigQuery驱动程序

    在新的数据库驱动程序窗口中,提供以下信息:

    • ID:BigQuery,但您可以输入自己的驱动程序ID,只要它仅包含字母数字字符和下划线即可。
    • 名称:BigQuery,但是您可以输入自己的驱动程序名称。
    • 数据库类型:BigQuery在下拉列表中可用,因此数据库类型设置为bigquery
    • 说明:例如,我的Google BigQuery驱动程序。
    • URL模板:通过在“数据库”类型中选择bigquery,URL模板将自动预设为BigQuery的默认JDBC URL模板,即。请直接参考下面的URL模板语法信息JDBC URL模板部分,以获取有关支持的令牌(例如主机,端口和数据库)的更多信息。jdbc:bigquery://<host>:<port>;ProjectId=<database>
    • 类路径:单击添加文件以添加BigQuery JDBC驱动程序文件。驱动程序文件的路径将出现在Classpath区域中。
    • 驱动程序类:单击“查找驱动程序类”将自动检测所有可用的JDBC驱动程序类和版本,在本例中为1.2.0版中的com.simba.googlebigquery.jdbc42.Driver

    填写所有信息后,单击“确定”,新添加的驱动程序将出现在数据库驱动程序首选项表中。单击“*应用并关闭”*以应用更改。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Cyb7OnvH-1615987554225)(https://docs.knime.com/2020-12/db_extension_guide/img/020_driverbigquery2.PNG)]

    图17.数据库首选项页面

    要连接到BigQuery服务器,建议使用Google身份验证(API密钥)节点对Google API进行身份验证并创建连接,然后使用Google BigQuery Connector节点连接到BigQuery。另外,您也可以通过“ JDBC参数”选项卡指定特定于驱动程序的身份验证信息。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3fOFyb7C-1615987554227)(https://docs.knime.com/2020-12/db_extension_guide/img/020_connect_to_bigquery.PNG)]

    图18.连接到BigQuery

    在*Google身份验证(API密钥)*节点的配置窗口中,您需要提供:

    • 服务帐户电子邮件服务帐户的电子邮件地址。请参阅 BigQuery 文档,以获取有关如何创建服务帐户的更多信息。
    • P12密钥文件位置:专用P12密钥文件的路径。创建服务帐户电子邮件时,您可以JSON或P12密钥/凭证的形式创建服务帐户密钥。请注意,此处仅支持P12键。
    • 范围:将为此连接授予的范围。请参阅可用BigQuery API范围列表上的Google文档 。例如,选择Google BigQuery Connection可以查看和管理Google BigQuery中的数据。
    *Google身份验证(API密钥)*节点 仅支持P12密钥!

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fQHp1Fdt-1615987554229)(https://docs.knime.com/2020-12/db_extension_guide/img/020_google_auth_conf.PNG)]

    图19. Google身份验证(API密钥)节点的配置窗口

    连接成功后,它可以被用来作为输入谷歌服务连接谷歌的BigQuery连接器节点。配置窗口包含以下内容:

    • 驱动程序名称:我们在注册驱动程序时先前提供的BigQuery驱动程序的名称。在我们的示例中是BigQuery
    • 主机名:Google BigQuery服务器的主机名(或IP地址)。
    • 端口:Google BigQuery服务器正在监听的端口。默认端口是443。
    • 数据库名称:您要连接的数据库的名称(项目ID)。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g96kCTFG-1615987554231)(https://docs.knime.com/2020-12/db_extension_guide/img/020_bigquery_conf.PNG)]

    图20. Google BigQuery Connector节点的配置窗口

    连接到Microsoft SQL Server

    默认情况下,专用的Microsoft SQL Server连接器节点与jTDS for Microsoft SQL Server驱动程序捆绑在一起。如果要使用Microsoft SQL Server官方驱动程序 ,则KNIME提供了一个附加插件来安装驱动程序。请参阅第三方数据库驱动程序插件以获取有关该插件及其安装方式的更多信息。

    也可以使用您自己的Microsoft SQL Server驱动程序。要注册您自己的驱动程序,请参阅“注册您自己的JDBC驱动程序” 部分。但是,Microsoft SQL Server驱动程序可能需要几个本机库,例如DLL。在这种情况下,除了数据库驱动程序窗口中的JDBC文件之外,您还需要将所有必需的本机库复制到一个文件夹中,然后通过“*添加目录”*按钮注册此文件夹.jar。如果您使用提供的Microsoft SQL Server jTDS驱动程序或通过插件安装的Microsoft SQL Server官方驱动程序,则不需要此步骤。

    所有必需的文件(例如sqljdbc_auth.dll或ntlmauth.dll)都是提供的驱动程序的一部分。

    安装JDBC驱动程序之后,可以使用Microsoft SQL Server连接器节点开始连接到Microsoft SQL Server。请参阅连接到预定义的数据库,以获取有关如何使用专用连接器节点进行连接的更多信息。

    Microsoft SQL Server支持所谓的 Windows本机身份验证模式。如果要使用此模式,只需在配置窗口的“*身份验证”*设置中选择“ 无/本机身份**验证”。以下各节说明如何使用此模式,具体取决于您使用的驱动程序。

    使用Microsoft SQL Server的官方驱动程序进行Windows本机身份验证

    要将此模式与Microsoft SQL Server提供的官方驱动程序一起使用,KNIME Analytics Platform需要在Windows计算机上运行,并且您需要登录到要连接到的Microsoft SQL Server接受的Windows域中。此外,您需要在“ JDBC参数”选项卡中指定以下条目: 值为true的**IntegratedSecurity。有关更多详细信息,请参见 Microsoft文档

    使用Microsoft SQL Server的jTDS驱动程序进行Windows本机身份验证

    如果您正在使用提供的用于Microsoft SQL Server的jTDS驱动程序,并且KNIME Analytics Platform在登录到要连接的Microsoft SQL Server接受的Windows域的Windows计算机上运行,那么您无需指定任何JDBC参数。

    如果KNIME Analytics Platform在非Windows计算机上运行,则需要提供要用于身份验证的Windows域用户的用户名和密码。为此,请选择“*凭据”*选项或“*用户名和密码”选项。此外,还需要指定在以下条目JDBC参数标签: 域名<< Windows域名>>*作为值。有关更多详细信息,请参见jTDS FAQ中对domain属性的描述,或参见README.sso

    连接到Apache Hive™

    要连接到Hive,您需要安装 KNIME大数据连接器扩展

    默认情况下,专用的Hive连接器节点与开源Apache Hive JDBC驱动程序捆绑在一起。还支持专有驱动程序,但需要首先注册,例如Cloudera提供的Hive JDBC连接器。

    在此示例中,我们要使用专有的Cloudera Hive JDBC驱动程序连接到Hive。第一步是为Cloudera Enterprise下载最新的 Hive JDBC驱动程序。然后转到文件首选项KNIME数据库,然后单击添加

    020蜂巢

    图21.注册新的Apache Hive驱动程序

    在新的数据库驱动程序窗口中,提供以下信息:

    • ID:cloudera_hive,但是您可以输入自己的驱动程序ID,只要它仅包含字母数字字符和下划线即可。
    • 名称:Cloudera Hive,但是您可以输入自己的驱动程序名称。
    • 数据库类型:Hive在下拉列表中可用,因此数据库类型设置为hive
    • 说明:例如,我的Hive驱动程序。
    • URL模板:请确保该字段包含jdbc:hive2://<host>:<port>/[database]。请参阅“ JDBC URL模板”部分,以获取有关支持的令牌(例如主机,端口和数据库)的更多信息。
    • 类路径:单击添加文件以添加.jar包含Hive JDBC驱动程序的文件。驱动程序文件的路径将出现在Classpath区域中。
    • 驱动程序类:单击查找驱动程序类将自动检测所有可用的JDBC驱动程序类和版本。请确保选择com.cloudera.hive.jdbc41.HS2Driver

    最后,单击“确定”,新添加的驱动程序将出现在数据库驱动程序首选项表中。单击“*应用并关闭”*以应用更改,您可以开始连接到Hive数据库。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A6ti3mxo-1615987554236)(https://docs.knime.com/2020-12/db_extension_guide/img/020_driverhive2.PNG)]

    图22.数据库首选项页面

    Hive有一个称为Hive Connector的专用连接器节点,有关如何使用专用连接器节点进行连接的信息,请参阅连接到预定义的数据库

    连接到Apache Impala™

    要连接到Apache Impala,您需要安装 KNIME大数据连接器扩展

    默认情况下,专用的Impala连接器节点与开源的Apache Hive JDBC驱动程序捆绑在一起,该驱动程序与Impala兼容。还支持专有驱动程序,但需要先注册,例如Cloudera提供的Impala JDBC连接器。

    在此示例中,我们想使用专有的Cloudera Impala JDBC驱动程序连接到Impala。第一步是为Cloudera Enterprise下载最新的 Impala JDBC驱动程序。然后转到文件首选项KNIME数据库,然后单击添加

    020驱动程序

    图23.注册新的Apache Impala驱动程序

    在新的数据库驱动程序窗口中,提供以下信息:

    • ID:cloudera_impala,但是您可以输入自己的驱动程序ID,只要它仅包含字母数字字符和下划线即可。
    • 名称:Cloudera Impala,但是您可以输入自己的驱动程序名称。
    • 数据库类型:Impala在下拉列表中可用,因此数据库类型设置为impala
    • 说明:例如,我的Impala驱动程序。
    • URL模板:通过在数据库类型中选择impala,URL模板将自动预设为Impala的默认JDBC URL模板,即。有关更多可能的模板,只需单击下面的URL模板语法信息。请参阅“ JDBC URL模板”部分,以获取有关支持的令牌(例如主机,端口和数据库)的更多信息。jdbc:impala://<host>:<port>/[database]
    • 类路径:单击添加文件以添加.jar包含Impala JDBC驱动程序文件的文件。驱动程序文件的路径将出现在Classpath区域中。
    • 驱动程序类:单击查找驱动程序类将自动检测所有可用的JDBC驱动程序类和版本,在本例中为com.cloudera.impala.jdbc.Driver

    最后,单击“确定”,新添加的驱动程序将出现在数据库驱动程序首选项表中。单击“*应用并关闭”*以应用更改,您可以开始连接到Impala数据库。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vzdwindw-1615987554240)(https://docs.knime.com/2020-12/db_extension_guide/img/020_driverimpala2.PNG)]

    图24.“数据库首选项”页面

    Impala有一个称为Impala Connector的专用连接器节点,有关如何使用专用连接器节点进行连接的信息,请参阅连接到预定义的数据库

    从数据库读取

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AFtil7Se-1615987554242)(https://docs.knime.com/2020-12/db_extension_guide/img/030_reading.PNG)]

    图25.从数据库读取

    上图是有关如何从数据库读取数据的示例。在此示例中,我们想将存储在H2数据库中的航班数据集读取 到KNIME数据表中。

    首先,您需要一个连接器节点来建立与数据库的连接,在上面的示例中,它是一个H2数据库。根据我们要连接的数据库,有几个专用的连接器节点。有关如何连接到数据库的更多详细信息,请参阅“连接到数据库”部分。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M74Rn3Ie-1615987554244)(https://docs.knime.com/2020-12/db_extension_guide/img/030_tableselector-hidden.PNG)]图26. DB Table Selector配置对话框建立连接后,下一步是使用DB Table Selector节点,该节点允许基于输入数据库连接以交互方式选择表或视图。左侧的图显示了“*数据库表选择器”*节点的配置对话框。在顶部,您可以输入架构和要选择的表/视图名称,在此示例中,我们要选择“航班”表。

    按下“*选择表”*按钮将打开“数据库元数据浏览器”窗口,其中列出了数据库中的可用表/视图。

    此外,勾选“*自定义查询”*复选框将使您可以编写自己的自定义SQL查询来缩小结果范围。它接受任何SELECT语句,并且占位符#table#可用于引用通过“选择表格”按钮选择的表格

    输入类型映射选项卡允许您定义的数据库类型映射规则KNIME类型。有关此的更多信息,请参考“类型映射”部分。

    该节点的输出是一个DB Data连接,其中包含数据库信息,并且SQL查询由选择输入表或用户输入的自定义查询的框架自动构建。要在KNIME Analytics Platform中读取选定的表或视图,可以使用DB Reader节点。执行此节点将在数据库中执行输入的SQL查询,输出将是存储在KNIME数据表中的结果,该表将存储在运行KNIME Analytics Platform的计算机上。

    数据库元数据浏览器

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Np5KyUmk-1615987554246)(https://docs.knime.com/2020-12/db_extension_guide/img/030_metadata-cols.PNG)]图27.数据库元数据浏览器数据库元数据浏览器显示数据库模式,包括所有表/视图及其对应的列和列数据类型。首先,它从数据库中获取元数据并将其缓存以备后用。通过单击一个元素(模式/表/视图),它可以显示所包含的元素。要选择表或视图,请选择名称,然后单击“确定”或双击元素。窗口顶部的搜索框使您可以搜索数据库中的任何表或视图。底部有一个刷新按钮,用于重新获取模式列表,并带有有关上一次刷新模式多长时间的时间参考。
    如果您刚刚创建了一个表,但是在架构列表中找不到该表,则可能是元数据浏览器缓存不是最新的,因此请尝试单击右下角的刷新按钮来刷新列表。

    查询生成

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bsLqzeWw-1615987554251)(https://docs.knime.com/2020-12/db_extension_guide/img/040_queryoverview.PNG)]图28. DB Query节点成功连接到数据库后,将有一组节点提供数据库内数据操作,例如聚合,过滤,联接等。数据库节点具有可视化的用户界面,并 根据配置窗口中的用户设置在后台自动构建SQL查询,因此无需编码即可与数据库交互。每个节点的输出是一个SQL查询,该查询与该节点内执行的操作相对应。可以通过DB Data outport视图查看生成的SQL查询。

    可视查询生成

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yzedCKQQ-1615987554253)(https://docs.knime.com/2020-12/db_extension_guide/img/040_querygeneration.PNG)]

    图29.执行数据库内数据操作的工作流示例

    上图显示了数据库内数据操作的示例。在此示例中,我们从H2数据库读取 航班数据集。首先,我们对行进行过滤,以便仅采用满足特定条件的排期。然后,我们计算到达每个唯一目的地机场的平均飞行时间。最后,我们将平均值与原始值结合在一起,然后将结果读入KNIME Analytics Platform。

    第一步是连接到数据库并选择我们要使用的适当表。

    数据库行过滤器

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MXEOTH2n-1615987554254)(https://docs.knime.com/2020-12/db_extension_guide/img/040_rowfilter3.PNG)]

    图30.“ DB行过滤器”配置对话框

    选择表格后,您可以开始使用数据。首先,我们使用“ DB行过滤器”节点根据特定条件过滤行。上图显示了DB行过滤器的配置对话框。左侧有一个“预览”区域,该区域列出了要应用于输入数据的过滤器的所有条件。过滤器可以通过逻辑运算符(例如AND或OR)进行组合和分组。只有满足指定过滤条件的行才会保留在输出数据表中。底部有以下选项:

    • 添加条件:在列表中添加更多条件
    • :创建一个新的逻辑运算符(AND或OR)
    • 取消分组:删除当前选择的逻辑运算符
    • 删除:从列表中删除选定的条件

    要创建新条件,请单击Add_Condition按钮。要编辑条件,请在条件列表中选择,它将在右侧的条件编辑器中显示所选条件。编辑器至少包含两个下拉列表。最左边的一个包含输入数据表中的列,其旁边的一个包含与所选列类型兼容的运算符,例如=,!=,<,>。根据选择的操作,将显示第三个(可能是第四个)输入字段,以输入或选择过滤器值。值字段旁边的按钮将获取所选列的所有可能值,然后可在值字段中进行选择。

    单击“预览”列表中的逻辑运算符,将允许您在“与”或“或”之间进行切换,并可以通过单击“*取消分组”*来删除该运算符。

    如我们的示例所示,我们希望返回满足以下条件的所有行:

    • 源自芝加哥奥黑尔机场(ORD)或哈茨菲尔德-杰克逊亚特兰大机场(ATL)
    • AND发生在2017年6月
    • 并且在5到45分钟之间有轻微的到达延迟

    数据库组

    040组2

    图31. DB GroupBy:手动聚合

    下一步是使用DB GroupBy节点计算到达每个唯一目的地机场的平均飞行时间。要检索每个组的行数,请在“高级设置”中选中“*添加计数(*)”*复选框。可以通过结果列名称字段更改组计数列的名称。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bL0GIhVW-1615987554257)(https://docs.knime.com/2020-12/db_extension_guide/img/040_groupby.PNG)]

    图32. DB GroupBy:组设置

    要计算每个目标机场的平均飞行时间,我们需要按“*组”*选项卡中的“*目的地”*列进行 分组,然后在“*手动汇总”*选项卡中,选择“ ActualElapsedTime”列(空中时间)和AVG作为汇总方法。

    数据库连接器

    040细木工

    图33. DB Joiner:Joiner设置

    为了将结果连接回原始数据,我们使用DB Joiner节点,该节点根据两个表的连接列来连接两个数据库表。在“ Joiner设置”选项卡中,有用于选择联接模式的选项,包括“内部联接”,“完全外部联接”等,以及“联接”列。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9ayFfgJo-1615987554262)(https://docs.knime.com/2020-12/db_extension_guide/img/040_joiner2.PNG)]

    图34. DB Joiner:列选择

    在“*列选择”*选项卡中,可以从每个表中选择要包含在输出表中的列。默认情况下,底部输入的连接列不会显示在输出表中。

    高级查询构建

    有时,仅使用预定义的DB节点来操作数据库中的数据是不够的。本节将说明一些允许用户编写自己的SQL查询的数据库节点,例如DB QueryDB Query ReaderParametriczed DB Query Reader节点。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TP8uPbBY-1615987554263)(https://docs.knime.com/2020-12/db_extension_guide/img/040_advancedquery.PNG)]

    图35.具有高级查询节点的示例工作流

    每个将DB数据对象作为输入并返回DB数据对象作为输出的DB操作节点,将传入的SQL查询包装到子查询中。但是,某些数据库不支持子查询,如果是这种情况,请使用DB Query Reader节点从数据库中读取数据。

    下图显示了“数据库查询”节点的配置对话框。其他允许用户编写SQL语句的高级查询节点的配置对话框提供了类似的用户体验。有一个文本区域可以编写您自己的SQL语句,通过按Ctrl + Space可以提供语法突出显示和代码完成。在下部,有一个“*评估”*按钮,您可以在其中评估SQL语句并返回结果的前10行。如果SQL语句中有错误,则在“评估”窗口中将显示一条错误消息。左侧是“数据库元数据浏览器”窗口,通过该窗口,您可以浏览数据库元数据,例如表和视图及其对应的列。这 数据库列列表包含连接的数据库表中可用的列。双击任何一项,将其名称插入SQL语句区域中的当前光标位置。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pfhT7ZZL-1615987554266)(https://docs.knime.com/2020-12/db_extension_guide/img/040_dbquery2.PNG)]

    图36. DB Query节点的“配置”对话框

    数据库查询

    数据库查询”节点修改来自传入数据库数据连接的输入SQL查询。前任的SQL查询由占位符表示,#table#在执行期间将被替换。然后,修改后的输入查询在输出端口可用。

    数据库查询阅读器

    执行输入的SQL查询,并将结果作为KNIME数据表返回。该节点不会更改或包装查询,因此支持各种返回数据的语句。

    该节点支持SELECT之外的其他SQL语句,例如DESCRIBE TABLE

    参数化的数据库查询阅读器

    该节点允许您执行具有不同参数的SQL查询。它遍历输入KNIME表,并从输入表中获取值以参数化输入SQL查询。由于该节点具有KNIME数据表输入,因此它提供了一个类型映射选项卡,可用于更改映射规则。有关“类型映射”选项卡的更多信息,请参考“类型映射”部分。

    数据库结构操作

    数据库结构操纵是指对数据库表的任何操纵。以下工作流演示了如何使用DB Table Remover从数据库中删除现有表以及如何使用DB Table Creator节点创建新表 。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FVmhl3M1-1615987554268)(https://docs.knime.com/2020-12/db_extension_guide/img/050_dbstructmanip.PNG)]

    图37.数据库结构操纵工作流的示例

    数据库表删除器

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8uiPobLi-1615987554270)(https://docs.knime.com/2020-12/db_extension_guide/img/050_remover.PNG)]

    图38. DB Table Remover配置对话框

    该节点从传入数据库连接定义的数据库中删除表。执行此节点等效于执行SQL命令 DROP。在配置对话框中,有一个选项可以选择要删除的数据库表。该配置与“*数据库表选择器”*节点中的配置相同,您可以在其中输入相应的模式和表名,或在“数据库元数据浏览器”中选择它。

    在配置窗口中可以使用以下选项:

    级联:选择此选项意味着删除其他表/视图引用的表将不仅删除表本身,还删除所有相关表和视图。如果您的数据库不支持该选项,那么它将被忽略。

    如果表不存在则失败:选择此选项意味着,如果所选表在数据库中不存在,则节点将失败。默认情况下,此选项未启用,因此即使数据库中不存在所选表,该节点仍将成功执行。

    数据库表创建器

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nLCYXrjl-1615987554273)(https://docs.knime.com/2020-12/db_extension_guide/img/050_tablecreator.PNG)]

    图39. DB Table Creator:设置

    该节点创建一个新的数据库表。该表可以手动创建,也可以根据输入数据表规范动态创建。它支持高级选项,例如指定列是否可以包含空值或指定主键或唯一键以及SQL类型。

    启用“使用动态设置”选项时,数据库表结构由输入KNIME数据表的结构定义。该选项卡,并仅帮助阅读,以验证所创建的表的结构。可以通过更改类型映射来影响创建的数据库表结构,例如,通过定义应将KNIME双列作为字符串列写入数据库,DB Table Creator将为所有双列选择等效字符串的数据库类型。可以通过“*动态类型设置”*和“*动态密钥设置”*选项卡进一步影响此映射以及密钥生成。

    在设置选项卡中,您可以输入相应的架构和表名称。提供以下选项:

    创建临时表:选择此选项将创建一个临时表。临时表的处理方式(例如其存在时间,范围)等取决于您使用的数据库。有关此的更多详细信息,请咨询您的数据库供应商。

    *如果表存在,则失败:如果表已经存在,*选择此选项将使节点失败,并显示特定于数据库的错误消息。默认情况下,此选项是禁用的,因此该节点将成功执行,并且如果已经存在则不创建任何表。

    使用动态设置:选择此项将允许节点根据输入的KNIME表和“动态设置”选项卡动态定义数据库表的结构,例如列名和类型。仅在启用此选项后,“动态类型设置”和“动态列设置”选项卡才可用。与基于**KNIME的SQL类型映射中定义的映射相比,基于名称的SQL类型映射中定义的映射具有更高的优先级 。如果两个选项卡中均未定义映射,则使用基于数据库连接器节点的“类型映射”定义的默认映射 。请注意,在动态设置模式下, 标签变为只读,以预览动态设置的效果。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GoK4IWQ2-1615987554275)(https://docs.knime.com/2020-12/db_extension_guide/img/050_tablecreator2.PNG)]

    图40. DB Table Creator:列

    在“*列”*选项卡中,您可以手动修改输入表中的列名称与其对应的SQL类型之间的映射。您可以添加或删除列,并为特定列设置适当的SQL类型。但是,如果选择了“使用动态设置”,则此选项卡将变为只读选项,并用作动态设置的预览。

    在“*键”*选项卡中,您可以手动将某些列设置为主键/唯一键。与“*列”*选项卡中一样,如果启用了“使用动态设置”,则此选项卡将变为只读状态并用作动态设置的预览。

    附加选项选项卡中,您可以编写附加的SQL语句,该语句将附加在CREATE TABLE语句之后,例如,存储参数。该语句将附加到自动生成的CREATE TABLE语句的末尾,并作为单个语句执行。

    在“动态列设置”中,有两种类型的SQL类型映射:基于名称和基于KNIME。

    • 在*基于名称的SQL类型映射中,*您可以基于列名称为一组列定义默认的SQL类型映射。您可以添加一个新行,其中包含应该映射的列的名称模式。名称模式可以是带通配符的字符串或正则表达式。与基于**KNIME的SQL类型映射中定义的映射相比,基于名称的SQL类型映射中定义的 映射具有更高的优先级。
    • 在基于*KNIME类型的SQL类型映射中,*您可以基于KNIME数据类型定义默认的SQL类型映射。您可以添加包含应映射的KNIME数据类型的新行。

    在“*动态键设置”中,*您可以基于列名动态定义键定义。您可以添加一个新行,其中包含应用于定义新键的列的名称模式。名称模式可以是带通配符的字符串或正则表达式。

    支持的通配符是*(匹配任意数量的字符)和?。(匹配一个字符),例如KNI *将匹配所有以KNI开头的字符串,例如KNIME而KNI?将仅匹配以KNI开头,后跟第四个字符的字符串。

    DB操作

    本节描述了用于数据库内操作的各种DB节点,例如DB DeleteDB WriterDB InsertDB UpdateDB MergeDB Loader 节点,以及数据库事务节点。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oZcrf51Z-1615987554277)(https://docs.knime.com/2020-12/db_extension_guide/img/060_overview.PNG)]

    图41.数据库操作示例

    数据库删除

    该节点从数据库中的选定表中删除行。输入是描述数据库的DB连接端口,还有一个KNIME数据表,其中包含定义从数据库中删除哪些行的值。它根据输入表中选定的列删除数据库中的数据行。因此,所有选定的列名都需要与数据库中的列名完全匹配。仅将删除数据库表中与KNIME输入数据表中所选列的值组合匹配的行。

    下图显示了“ *DB删除”*节点的配置对话框。用于DB操作的其他节点的配置对话框非常相似。您可以输入表名称及其对应的架构,或在“数据库元数据浏览器”中通过单击“选择表”选择表名称

    另外,需要选择输入表中的标识列。所选KNIME表列的名称必须与所选数据库表中的名称匹配。数据库表中所有与输入的KNIME数据表中的选定列匹配的值都将被删除的行。在SQL中,这等效于各WHERE列。共有三个选项:

    • 错误失败:如果选中该节点,则在执行过程中发生任何错误时该节点将失败,否则即使输入行之一在数据库中引起异常,该节点也将成功执行。
    • 附加删除状态列:如果选中,它将在输出表中添加两个额外的列。第一列包含该DELETE语句影响的行数。大于或等于零的数字表示该操作已成功执行。值-2表示该操作已成功执行,但受影响的行数未知。第二列将包含警告消息(如果存在)。
    • 禁用数据库数据输出端口:如果选中,它将禁用数据库数据输出端口和在节点执行结束时执行元数据查询,这可能会导致不支持子查询的数据库出现问题。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BsEN3Re4-1615987554279)(https://docs.knime.com/2020-12/db_extension_guide/img/060_delete.PNG)]

    图42.“ *DB删除”*节点的“配置”对话框

    使用“*输出类型映射”*选项卡,可以定义从KNIME类型到数据库类型的映射规则。有关此的更多信息,请参考“类型映射”部分。

    数据库作家

    该节点将从输入的KNIME数据表中选择的值插入到指定的数据库表中。它执行的功能与“数据库插入”节点相同,但是,如果在插入值之前不存在该数据库表,它还会自动创建数据库表。新创建的表将为每个选定的输入KNIME列都有一个列。数据库列名称将与输入KNIME列的名称相同。数据库列类型是从给定的KNIME类型和类型映射配置派生的 。所有数据库列都将允许缺少值(例如NULL)。

    如果要控制创建的数据库表的属性,请使用DB Table Creator节点。

    还有一个选项可以通过启用配置窗口中的删除现有表选项来覆盖现有表。启用该选项将从数据库中删除任何具有给定名称的表,然后创建一个新表。如果未选择此选项,则新数据行将追加到现有表中。一旦数据库表存在,该节点将以与“数据库插入”节点相同的方式将所有KNIME输入行写入数据库表。

    数据库插入

    该节点将从输入的KNIME数据表中选择的值插入到指定的数据库表中。所有选定的列名都需要与数据库表中的列名完全匹配。

    数据库更新

    该节点使用输入的KNIME数据表的选定列中的值更新指定数据库表中的行。标识列用于WHERESQL语句的一部分,标识数据库表中将更新的行。要更新的列用在SETSQL语句的一部分中,并包含将被写入所选数据库表中匹配行的值。

    数据库合并

    “*数据库合并”*节点是“*数据库更新”*和“*数据库插入”*节点的组合。如果数据库支持该功能,它将执行一条MERGE 语句,该语句将插入所有新行或更新所选数据库表中的所有现有行。如果数据库不支持合并功能,则节点首先尝试更新数据库表中的所有行,然后在更新过程中插入未找到匹配项的所有行。所选KNIME表列的名称需要与应在其中更新行的数据库表的名称匹配。

    数据库加载器

    从4.3开始,DB Loader节点采用了新的文件处理框架,该框架允许在各种文件系统之间进行无缝迁移。有关更多详细信息,请查阅《KNIME文件处理指南》

    该节点执行特定于数据库的批量加载功能,只有某些数据库(例如Hive,Impala,MySQL,PostgreSQL和H2)支持将大量数据加载到现有数据库表中。

    将数据加载到表中时,大多数数据库不会执行数据检查,这可能会导致数据表损坏。该节点会执行一些初步检查,例如检查输入的KNIME数据表的列顺序和列名是否与所选数据库表兼容。但是,它不检查列类型的兼容性或值本身。请确保KNIME表的列类型和值与数据库表兼容。

    根据数据库的不同,通常会使用中间文件格式(例如CSV,Parquet,ORC)来提高效率,这可能需要将文件上传到服务器。如果需要上传文件,则可以使用文件处理节点和数据库支持的任何协议,例如SSH / SCP或FTP。将数据加载到表中之后,如果数据库不再需要该已上传的文件,则该文件将被删除。如果由于某种原因不需要上传或存储文件,则文件连接会阻止执行。

    某些数据库(例如MySQL和PostgreSQL)支持基于文件和基于内存的上载,这要求数据库具有不同的权限。例如,如果您无权执行基于文件的数据加载,请尝试使用基于内存的方法。

    如果数据库支持各种加载方法(基于文件或基于内存),则可以在“选项”选项卡中选择该方法,如下例所示。否则,“*加载程序模式”*选项将不会出现在配置对话框中。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GvQDiU40-1615987554286)(https://docs.knime.com/2020-12/db_extension_guide/img/060_dbloader-option.PNG)]

    图43. DB Loader:选项

    根据所连接的数据库,对话框设置可能会更改。例如,MySQL和PostgreSQL使用CSV文件进行数据传输。为了更改CSV文件的创建方式,请转到“*高级”*标签。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0y7hnahM-1615987554288)(https://docs.knime.com/2020-12/db_extension_guide/img/060_dbloader-advanced.PNG)]

    图44. DB Loader:高级

    数据库事务节点

    数据库扩展还提供了用于模拟数据库事务的节点。事务使您可以将多个数据库数据操作操作分组为一个工作单元。这个单元要么全部执行,要么根本不执行。

    数据库事务开始

    “ *DB事务启动”*节点使用输入数据库连接启动事务。只要事务正在进行中,就不能在事务外部使用输入数据库连接。根据 隔离级别,在事务处理过程中,其他连接可能看不到数据库中的任何更改。事务使用已连接数据库的默认隔离级别。

    数据库交易结束

    DB事务结束节点结束该输入数据库连接的事务。节点以提交结束事务,如果成功执行,则所有其他用户都可以看到所有更改。否则,节点将通过回滚来结束事务,从而使数据库返回到事务开始时的状态。

    该节点有2个输入端口。第一个是事务性数据库连接端口,应从事务处理链的末端连接到该端口。第二个端口应包含来自“*数据库事务开始”*节点的输出的事务数据库连接 。如果事务成功完成并执行了提交,则来自第一个输入端口的数据库连接将被转发到输出端口,否则,如果发生回退,则将转发来自第二个输入端口的数据库连接。

    下图显示了事务节点的示例。在此示例中,事务由两个DB Writer节点组成,这些节点连续将数据写入同一表。如果在写入的任何步骤中发生错误,则更改将不会执行,并且数据库将在事务开始时返回到先前的状态。如果没有错误发生,则将提交对数据库的更改。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lYob0JVz-1615987554291)(https://docs.knime.com/2020-12/db_extension_guide/img/060_transaction.PNG)]

    图45.数据库事务节点

    类型映射

    数据库框架允许您定义规则以从数据库类型映射 到KNIME类型,反之亦然。这是必须的,因为数据库支持不同的类型集,例如,Oracle仅具有一个精度不同的数字类型来表示整数,而且还浮点数,而KNIME使用不同的类型(整数,长整数,双精度)来表示它们。

    特别是日期和时间格式在不同的数据库中受不同的支持。例如, 只有少数数据库支持在KNIME中用于表示定义的时区内的时间点的分区日期时间类型。但是,使用类型映射框架,您可以强制KNIME在将其写入数据库表之前将区域日期时间类型自动转换为字符串,并在读取该字符串时将其转换回区域日期时间值。

    类型映射框架由针对从KNIME Analytics Platform视图点指定的每个方向的一组映射规则组成:

    • 输出类型映射:KNIME类型到数据库类型的映射
    • 输入类型映射:从数据库类型到KNIME类型的映射

    每个映射方向都有两组规则:

    • 按名称映射:基于列名称(或正则表达式)和类型的映射规则。仅考虑匹配两个条件的列。
    • 按类型映射:基于KNIME或数据库类型的映射规则。将考虑指定数据类型的所有列。

    可以在分析工作流中的各个位置定义和更改类型映射。基本配置可以在不同的连接器节点中完成。它们带有明智的数据库特定的默认映射。类型映射规则是数据库连接数据库数据连接的一部分, 并且继承自先前的节点。除了连接器节点外,还为所有数据库节点提供KNIME数据表,还有一个Output Type Mapping选项卡,用于将输入KNIME列的节点的数据类型映射到相应数据库列的类型。

    可以通过DB Type Mapper节点更改任何DB Data连接的数据库类型到KNIME类型的映射

    数据库类型映射器

    通过选择给定数据库类型的KNIME类型,“ *DB Type Mapper”*节点将数据库更改为后续节点的KNIME类型映射配置。配置对话框允许您添加新的或更改现有的类型映射规则。所有新的或更改的规则均标记为粗体。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oKH9k4Tj-1615987554293)(https://docs.knime.com/2020-12/db_extension_guide/img/070_typemapper.PNG)]

    图46. DB Type Mapper配置对话框

    来自先前节点的规则不能删除,只能更改。

    移民

    本节说明如何将包含旧数据库节点(旧版)的工作流迁移到新数据库框架。该工作流程迁移工具可以用来指导您完成整个过程和数据库遗留节点转换为对应的新数据库节点。有关旧节点与新节点之间的映射,请查看“节点名称映射”部分中的列表。

    所有先前注册的JDBC驱动程序都需要重新注册。有关如何在新数据库框架中注册驱动程序的更多信息,请参考“注册您自己的JDBC驱动程序”部分。

    工作流程迁移工具

    工作流迁移工具仍处于预览状态。我们将继续添加新功能并修改现有功能。

    工作流迁移工具可帮助您将包含旧数据库节点的现有工作流迁移到新数据库节点。该工具不会更改任何现有工作流程,而是在原始工作流程的副本上执行迁移。

    作为示例,我们可以在下图中看到一个包含数据库遗留节点的工作流。目标是使用工作流迁移工具来帮助我们将旧式节点迁移到新的数据库节点。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fYL549Ol-1615987554295)(https://docs.knime.com/2020-12/db_extension_guide/img/080_migration_message.PNG)]

    图47.包含数据库旧版节点的工作流

    为了启动工作流迁移工具,我们只需要打开包含要迁移的数据库旧节点的工作流。将在工作流顶部显示一条消息,其中包含用于迁移工作流的选项(请参见上图)。

    点击*迁移工作流程…将打开迁移向导窗口,如下图所示。在此窗口中,您可以更改要迁移的工作流程(包含数据库遗留节点的工作流程),并输入新工作流程的名称,该名称是旧工作流程的副本,但数据库遗留节点被新工作流程替换(如果可供使用的话)。新工作流程的默认名称是带有(迁移的)*后缀的旧工作流程的名称。

    原始工作流程不会在整个迁移过程中进行修改。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UsIZ9V8k-1615987554298)(https://docs.knime.com/2020-12/db_extension_guide/img/080_wizard1.PNG)]

    图48.迁移工具:选择工作流程

    单击下一步转到下一页,如下所示。在此阶段,将分析工作流程,并将在此处列出存在迁移规则的所有数据库旧节点及其等效的新节点。该工具还会执行初步检查并显示任何潜在问题。如果您同意映射建议,请单击“*下一步”*执行迁移过程。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WGpl1jFp-1615987554300)(https://docs.knime.com/2020-12/db_extension_guide/img/080_wizard2.PNG)]

    图49.迁移工具:显示潜在的映射

    迁移过程完成后,您可以看到如下所示的迁移报告。如果在迁移过程中发生任何警告或问题,报告中将显示相应的消息。您还可以选择以HTML格式保存并打开迁移报告。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UrxhUFU2-1615987554302)(https://docs.knime.com/2020-12/db_extension_guide/img/080_wizard3.PNG)]

    图50.迁移工具:迁移报告

    下图显示了已迁移的工作流程,其中所有数据库旧式节点都被新的数据库节点替换,同时保持所有设置不变。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B3Mw6N8t-1615987554304)(https://docs.knime.com/2020-12/db_extension_guide/img/080_migration_result.PNG)]

    图51.包含迁移的数据库节点的新工作流

    禁用工作流迁移消息

    如果您不想迁移并想禁用迁移消息,请单击消息中的“禁用此消息”。将打开“首选项” →“*数据库(旧版)”*页面,您可以在其中取消选中“提供迁移包含旧数据库节点的工作流”选项 ,如下图所示。单击“应用并关闭”以保存设置,如果您打开包含旧数据库节点的工作流,该消息将不再显示。要撤消此设置,只需再次打开“首选项” →“*数据库(旧版)”*页面并启用该复选框即可。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WrcrQimy-1615987554306)(https://docs.knime.com/2020-12/db_extension_guide/img/080_disable_message.PNG)]

    图52.禁用迁移消息

    节点名称映射

    下表显示了数据库旧节点和新数据库节点之间的映射。

    数据库旧版节点新数据库节点
    数据库类型映射
    亚马逊雅典娜连接器亚马逊雅典娜连接器
    Amazon Redshift连接器Amazon Redshift连接器
    数据库申请标签DB Apply-Binner
    数据库自动绑定DB自动装箱
    数据库列过滤器数据库列过滤器
    数据库列重命名数据库列重命名
    数据库连接表读取器数据库读取器
    数据库连接表编写器数据库连接表编写器
    数据库连接器数据库连接器
    数据库删除数据库删除
    数据库删除表数据库表删除器
    数据库分组数据库组
    数据库连接器数据库连接器
    数据库循环可以替换为参数化DB查询阅读器
    数据库数字容器DB数位binner
    数据库枢轴DB枢轴
    数据库查询数据库查询
    数据库阅读器数据库查询阅读器
    数据库行过滤器数据库行过滤器
    数据库采样数据库采样
    数据库排序器数据库分类器
    数据库SQL执行器DB SQL执行器
    数据库表连接器可以用数据库连接器和数据库表选择器替换
    数据库表创建者数据库表创建器
    数据库表选择器数据库表选择器
    数据库更新数据库更新
    数据库作家数据库作家
    H2连接器H2连接器
    蜂巢连接器蜂巢连接器
    蜂巢装载机数据库加载器
    Impala连接器Impala连接器
    Impala加载程序数据库加载器
    Microsoft SQL Server连接器Microsoft SQL Server连接器
    MySQL连接器MySQL连接器
    参数化数据库查询参数化的数据库查询阅读器
    PostgreSQL连接器PostgreSQL连接器
    SQL提取数据库查询提取器
    SQL注入数据库查询注入器
    SQLite连接器SQLite连接器
    Vertica连接器Vertica连接器
    Microsoft Access连接器
    数据库插入
    数据库合并
    数据库列重命名(正则表达式)
    数据库分区

    服务器设置

    本节包含与执行包含KNIME Server上的数据库节点的工作流有关的所有内容。

    KNIME服务器上的JDBC驱动程序

    KNIME Server允许您定义 自定义配置文件, 以在其自己的执行程序以及KNIME Analytics Platform客户端上自动设置JDBC驱动程序。

    除了定制概要文件之外,还可以使用首选项文件直接在执行程序上注册JDBC驱动程序 。但是,在这种情况下,服务器执行程序和所有KNIME Analytics Platform客户端的首选项需要手动保持同步,以便两端都可以使用相同的驱动程序。

    服务器端步骤

    1. 创建一个配置文件夹<server-repository>/config/client-profiles。文件夹的名称与配置文件的名称相对应。该文件夹将保存首选项和其他要分发的文件。

    2. .jar包含JDBC驱动程序的文件复制到配置文件文件夹中。

    3. 在配置文件文件夹中,创建一个.epf具有以下内容的首选项文件(文件名以结尾):

      /instance/org.knime.database/drivers/ <驱动程序ID> / database_type = <数据库>
      /instance/org.knime.database/drivers/ <DRIVER_ID> / driver_class = <DRIVER_CLASS_NAME>
      /instance/org.knime.database/drivers/<DRIVER_ID>/paths/0 = $ {profile:location} / <DRIVER_JAR>
      /instance/org.knime.database/drivers/ <DRIVER_ID> / url_template = <URL_TEMPLATE>
      /instance/org.knime.database/drivers/ <DRIVER_ID> / version = <DRIVER_VERSION>
      

      在哪里:

      • <DRIVER_ID>:JDBC驱动程序的唯一ID,仅由字母数字字符和下划线组成。

      • <DATABASE>:数据库类型。请查阅“注册您自己的JDBC驱动程序”中显示的首选项页面,以获取当前可用类型的列表。

      • <DRIVER_CLASS_NAME>:JDBC驱动程序类,例如oracle.jdbc.OracleDriver对于Oracle。

      • <DRIVER_JAR>.jar包含JDBC驱动程序类的文件名(包括文件扩展名)。请注意,该变量${profile:location}代表下载定制概要文件的每个客户端上概要文件文件夹的位置。每个客户都会将其自动替换为正确的位置。

      • <URL_TEMPLATE>:用于驱动程序的JDBC URL模板。请参阅“ JDBC URL模板”部分以获取更多信息。请注意,冒号(:)和反斜杠(\)必须以反斜杠转义。例子:

        jdbc \:oracle \:thin \:@ <主机> \:<端口> / <数据库>
        
      • <DRIVER_VERSION>:JDBC驱动程序的版本,例如12.2.0。该值可以随意选择。

    4. 通过将此信息添加到knime.ini文件中,需要使KNIME Server执行者知道自定义配置文件,以便他们可以向KNIME Server请求。请参阅《KNIME服务器管理指南》的相应部分 以了解如何进行设置。

    请注意,本节末尾有特定于数据库的示例。

    客户端步骤

    需要使KNIME Analytics Platform客户端知道自定义配置文件,以便他们可以向KNIME Server请求。请参阅《KNIME服务器管理指南》的相应部分,以 获取有关如何进行设置的完整参考。

    在KNIME Analytics Platform中,您可以转到文件首选项KNIME定制配置文件。这将打开“*定制配置文件”*页面,您可以在其中选择要使用的KNIME服务器和配置文件。更改将在重启KNIME Analytics Platform后生效。

    要查看是否已添加驱动程序,请转至文件首选项KNIME数据库。在此页面中,通过定制配置文件添加的驱动程序在驱动程序ID之后标记为origin:配置文件(请参见下图)。这些驱动程序可以编辑,但不能删除。要删除配置文件驱动程序,请转到“*自定义配置文件”*页面,然后取消选择相应的配置文件。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hlKqEdPO-1615987554307)(https://docs.knime.com/2020-12/db_extension_guide/img/090_profile.png)]

    图53. DB Preferences页面

    默认JDBC参数

    默认JDBC参数为服务器管理员提供了一种方法,可以在由KNIME Server上运行的工作流建立的JDBC连接上注入JDBC参数。这些参数优先于连接器节点中指定的值。要指定其他JDBC参数,请将以下行添加到.epf定制概要文件中:

    /instance/org.knime.database/drivers/ <DRIVER_ID> /attributes/additional/org.knime.database.util.DerivableProperties/knime.db.connection.jdbc.properties/ <JDBC_PARAMETER> / type = <TYPE>
    /instance/org.knime.database/drivers/ <DRIVER_ID> /attributes/additional/org.knime.database.util.DerivableProperties/knime.db.connection.jdbc.properties/ <JDBC_PARAMETER> / value = <VALUE>
    

    在哪里:

    • <DRIVER_ID>:JDBC驱动程序的唯一ID。
    • <JDBC_PARAMETER>:要设置的JDBC参数的名称。
    • <TYPE>and <VALUE>:一个类型和值,它指定将JDBC参数设置为什么。<TYPE>并且<VALUE>可以被选择如下:
      • 设置<TYPE>CONTEXT_PROPERTY允许指定与工作流程上下文相关的属性。<VALUE>可以设置为以下之一:
        • context.workflow.name:KNIME工作流程的名称。
        • context.workflow.path:相对于安装点的工作流路径。
        • context.workflow.absolute-path:绝对工作流程路径。
        • context.workflow.user:执行工作流程的KNIME Server用户的名称。
        • context.workflow.temp.location:工作流临时位置的路径。
        • context.workflow.author.name:工作流程作者的姓名。
        • context.workflow.last.editor.name:上次编辑工作流程的用户名。
        • context.workflow.creation.date:工作流程的创建日期。
        • context.workflow.last.time.modified:工作流程的最后修改时间。
      • 设置<TYPE>CREDENTIALS_LOGIN允许从凭证流变量中指定登录名。设置<VALUE>为流变量的名称。
      • 设置<TYPE>CREDENTIALS_PASSWORD允许从凭证流变量中指定密码。设置<VALUE>为流变量的名称。
      • 设置<TYPE>FLOW_VARIABLE允许指定流变量。设置<VALUE>为流变量的名称。
      • 设置<TYPE>LITERAL允许指定不进行任何进一步替换的文字值。设置<VALUE>为文字值。
      • 设置<TYPE>LOCAL_URL可以指定中的URL <VALUE>,例如“ knime” URL。
    请注意,本节末尾有特定于数据库的示例。

    保留的JDBC参数

    在KNIME Server上执行工作流时,例如DelegationUID对于使用基于Simba的驱动程序的Impala / Hive连接,某些JDBC参数可能会导致安全问题 。可以将此类参数标记为*保留,*以防止工作流在KNIME Server上使用它们。要将参数设置为保留参数,请将以下行添加到.epf自定义配置文件中:

    /instance/org.knime.database/drivers/<DRIVER_ID>/attributes/reserved/org.knime.database.util.DerivableProperties/knime.db.connection.jdbc.properties/<JDBC_PARAMETER>=true
    

    或更短的版本:

    /instance/org.knime.database/drivers/<DRIVER_ID>/attributes/reserved/*/knime.db.connection.jdbc.properties/<JDBC_PARAMETER>=true
    

    在哪里:

    • <DRIVER_ID>:JDBC驱动程序的唯一ID。
    • <JDBC_PARAMETER>:JDBC参数的名称。
    请注意,本节末尾有特定于数据库的示例。

    示例:Oracle

    在此示例中,我们将在KNIME Server上注册专有的 Oracle JDBC驱动程序

    1. 下载专有的 Oracle JDBC驱动程序

    2. 在其中创建配置文件文件夹<server-repository>/config/client-profiles并命名Oracle(例如)。

    3. ojdbc8.jar从下载的驱动程序复制到新创建的配置文件文件夹。

    4. 在配置文件文件夹中,创建一个名为oracle.epf(例如)的新文件,其内容如下:

      /instance/org.knime.database/drivers/Oracle/database_type=oracle
      /instance/org.knime.database/drivers/Oracle/driver_class=oracle.jdbc.OracleDriver
      /instance/org.knime.database/drivers/Oracle/paths/0=${profile:location}/ojdbc8.jar
      /instance/org.knime.database/drivers/Oracle/url_template=jdbc\:oracle\:thin\:// <主机> \:<端口> / <数据库>
      /instance/org.knime.database/drivers/Oracle/version=12.2.0
      

    示例:Apache Hive™

    与Apache Hive的连接需要进一步的设置步骤,具体取决于所使用的JDBC驱动程序。在此示例中,我们将展示如何:

    1. 在KNIME Server上注册Cloudera提供的专有 Hive JDBC驱动程序
    2. 在KNIME Server上配置用户模拟(对于嵌入式和专有的Hive JDBC驱动程序)。

    基于Simba的专有JDBC驱动程序注册

    如果首选使用嵌入式开源Apache Hive JDBC驱动程序,请跳至下一部分
    1. 从Cloudera网站下载专有的Hive JDBC驱动程序

    2. 在其中创建配置文件文件夹<server-repository>/config/client-profiles并命名ClouderaHive(例如)。

    3. HiveJDBC41.jar从下载的JDBC驱动程序复制到新创建的配置文件文件夹。

    4. 在配置文件文件夹中,创建一个名为hive.epf(例如)的新首选项文件,其中包含以下内容:

      /instance/org.knime.database/drivers/cloudera_hive/database_type=hive
      /instance/org.knime.database/drivers/cloudera_hive/driver_class=com.cloudera.hive.jdbc41.HS2Driver
      /instance/org.knime.database/drivers/cloudera_hive/paths/0=${profile:location}/HiveJDBC41.jar
      /instance/org.knime.database/drivers/cloudera_hive/url_template=jdbc\:hive2\:// <主机> \:<端口> / [数据库]
      /instance/org.knime.database/drivers/cloudera_hive/version=2.6.0
      
    5. 根据建议,如果KNIME Server必须模拟工作流用户,请转到下一部分

    Hive上的用户模拟

    本示例将设置Hive JDBC驱动程序(嵌入式或专有),以便KNIME Server可以 在JDBC连接上模拟工作流用户

    在Hive上激活用户模拟取决于所使用的JDBC驱动程序:

    • 对于嵌入式Apache Hive JDBC驱动程序,将以下行添加到KNIME Server首选项文件中
    /instance/org.knime.database/drivers/hive/attributes/additional/org.knime.database.util.DerivableProperties/knime.db.connection.jdbc.properties/hive.server2.proxy.user/type=CONTEXT_PROPERTY
    /instance/org.knime.database/drivers/hive/attributes/additional/org.knime.database.util.DerivableProperties/knime.db.connection.jdbc.properties/hive.server2.proxy.user/value=context.workflow 。用户
    /instance/org.knime.database/drivers/hive/attributes/reserved/*/knime.db.connection.jdbc.properties/hive.server2.proxy.user=true
    
    • 对于专有的基于Simba的JDBC驱动程序,将以下行添加到首选项文件(使用在上一步(步骤4)中创建的首选项文件)。
    /instance/org.knime.database/drivers/cloudera_hive/attributes/additional/org.knime.database.util.DerivableProperties/knime.db.connection.jdbc.properties/DelegationUID/type=CONTEXT_PROPERTY
    /instance/org.knime.database/drivers/cloudera_hive/attributes/additional/org.knime.database.util.DerivableProperties/knime.db.connection.jdbc.properties/DelegationUID/value=context.workflow.user
    /instance/org.knime.database/drivers/cloudera_hive/attributes/reserved/*/knime.db.connection.jdbc.properties/DelegationUID=true
    

    示例:Apache Impala™

    在本示例中,我们将在KNIME Server上注册Cloudera提供的专有 Impala JDBC驱动程序。本示例设置了驱动程序,以便KNIME Server可以 在JDBC连接上模拟工作流用户

    如果您使用嵌入式开源Apache Hive JDBC驱动程序(用于Impala),则无需执行此步骤。但是,请注意,在这种情况下,由于驱动程序的限制,无法在KNIME Server上模拟用户。
    1. 从Cloudera网站下载专有的Impala JDBC

    2. 在其中创建配置文件文件夹<server-repository>/config/client-profiles并命名ClouderaImpala(例如)。

    3. ImpalaJDBC41.jar从下载的JDBC驱动程序复制到新创建的配置文件文件夹。

    4. 在配置文件文件夹中,创建一个名为impala.epf(例如)的新首选项文件,其中包含以下内容:

      /instance/org.knime.database/drivers/cloudera_impala/database_type=impala
      /instance/org.knime.database/drivers/cloudera_impala/driver_class=com.cloudera.impala.jdbc.Driver
      /instance/org.knime.database/drivers/cloudera_impala/paths/0=${profile:location}/ImpalaJDBC41.jar
      /instance/org.knime.database/drivers/cloudera_impala/url_template=jdbc\:impala\:// <主机> \ :: <端口> / [数据库]
      /instance/org.knime.database/drivers/cloudera_impala/version=2.6.0
      /instance/org.knime.database/drivers/cloudera_impala/attributes/additional/org.knime.database.util.DerivableProperties/knime.db.connection.jdbc.properties/DelegationUID/type=CONTEXT_PROPERTY
      /instance/org.knime.database/drivers/cloudera_impala/attributes/additional/org.knime.database.util.DerivableProperties/knime.db.connection.jdbc.properties/DelegationUID/value=context.workflow.user
      /instance/org.knime.database/drivers/cloudera_impala/attributes/reserved/*/knime.db.connection.jdbc.properties/DelegationUID=true
      

      请注意,最后三行使用DelegationUIDJDBC参数来强制 用户模拟 (推荐使用)。如果您不希望KNIME Server模仿工作流用户,则可以删除最后三行。# KNIME数据库扩展指南


    介绍

    KNIME数据库扩展提供了一组KNIME节点,这些节点允许连接到JDBC兼容的数据库。这些节点位于“节点存储库”中的“*数据库”*类别中,您可以在其中找到许多数据库访问,操作和编写节点。

    数据库节点是每个KNIME Analytics Platform安装的一部分。不需要安装任何其他的KNIME扩展。

    本指南描述了KNIME数据库扩展,并除其他外,展示了如何连接到数据库以及如何在数据库内部执行数据操作。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fWosZCZH-1615987556653)(C:\Users\nn\Desktop\FaceImage\010_overviewdb.png)]

    图1.使用数据库节点的示例工作流程

    端口类型

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Iw8Yqv9T-1615987556654)(https://docs.knime.com/2020-12/db_extension_guide/img/010_port.PNG)]

    图2.两种类型的数据库端口

    数据库扩展中有两种类型的端口:“数据库连接”端口(红色)和“数据库数据”端口(深红色)。

    DB连接有关当前DB会话,端口存储信息,例如数据类型,连接属性,JDBC性能,驱动器信息等

    DB数据端口不仅包含DB会话,还DB数据对象,这是一个SQL查询描述。

    出口视图

    执行数据库节点后,您可以在输出视图中检查结果,方法是右键单击该节点,然后在菜单底部选择要检查的输出。有关如何执行节点的更多信息,请参阅《 快速入门指南》

    数据库连接输出视图

    数据库连接的输出视图具有“*数据库会话”*选项卡,其中包含有关当前数据库会话的信息,例如数据库类型和连接URL。

    数据库数据输出视图

    当执行具有DB数据输出端口的数据库操作节点(例如DB GroupBy节点)时,该节点要做的是构建必要的SQL查询以执行用户选择的GroupBy操作并将其转发到工作流中的下一个节点。它实际上并不执行查询。但是,可以通过DB Data Outport视图检查中间结果的子集。除了有关数据库会话的信息外,数据库数据输出视图还包含输出数据的预览和说明。

    出口视图中的“表预览”选项卡在开始处显示一个空表。单击缓存号。行数: 将执行中间SQL查询并缓存输出的子集,然后将其显示在输出视图中。默认情况下,仅前100行被缓存,但是您可以在顶部设置自己的值。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DyjTnj7b-1615987556656)(https://docs.knime.com/2020-12/db_extension_guide/img/010_outport-cache.PNG)]

    图3.带有检索到的行的DB Outport视图

    根据SQL查询的复杂性,缓存前100行可能会花费很长时间。

    可以在“*数据库规范”*选项卡中检查表规范。它包含表中的列的列表,以及它们的数据库类型和相应的KNIME数据类型(有关数据库类型和KNIME类型之间的类型映射的更多信息,请参阅“类型映射”部分。为了获取表规范,则仅在节点的配置过程中或执行期间执行仅获取元数据而不查询数据本身的查询,可以通过连接器节点的“高级”选项卡禁用在配置过程中执行元数据查询。

    “*数据库查询”*选项卡包含中间SQL查询,该查询定义了此出口处的数据。该查询由在前面的数据库节点中创建的查询组成,并且仅当您想在KNIME数据表中(例如,使用DB Reader节点)检索结果时才执行查询。

    会话处理

    数据库会话生命周期由连接器节点管理。执行连接器节点将创建一个数据库会话,而重置该节点或关闭工作流程将破坏相应的数据库会话。

    连接到数据库

    节点存储库中的DB连接子类别包含

    • 一组用于特定数据库的特定于数据库的连接器节点,例如Microsoft SQL Server,MySQL,PostgreSQL,H2等。
    • 以及通用的数据库连接器节点。

    连接器节点通过其JDBC驱动程序创建与数据库的连接。在连接器节点的配置对话框中,您需要提供信息,例如数据库类型,数据库的位置以及身份验证方法(如果可用)。

    特定于数据库的连接器节点已经包含必需的JDBC驱动程序,并提供了针对特定数据库量身定制的配置对话框。 如果可能,建议在通用DB连接器节点上使用这些节点。

    连接到预定义的数据库

    以下是一些具有自己专用的连接器节点的数据库:

    • 亚马逊Redshift
    • 亚马逊雅典娜
    • Google BigQuery
    • H2
    • 微软Access
    • Microsoft SQL服务器
    • 的MySQL
    • 甲骨文
    • PostgreSQL的
    • SQLite的
    • Vertica
    由于许可限制,某些专用的连接器节点(例如Oracle或Amazon Redshift)没有JDBC驱动程序。如果要使用这些节点,则需要首先注册相应的JDBC驱动程序。请参阅“注册自己的JDBC驱动程序”部分,以了解如何注册自己的驱动程序。对于Amazon Redshift,请参阅“ 第三方数据库驱动程序插件”部分。

    如果您的数据库不存在专用的连接器节点,则可以使用通用的数据库连接器节点。有关此的更多信息,请参阅“连接到其他数据库”部分。

    找到数据库的正确连接器节点后,双击该节点以打开配置对话框。在“*连接设置”*窗口中,您可以提供数据库的基本参数,例如数据库类型,方言,位置或身份验证。然后单击“*确定”*并执行该节点以建立连接。

    KNIME Analytics Platform通常提供以下三种不同类型的连接器节点 :基于文件的连接器节点基于服务器的连接器节点通用连接器节点,以下各对此进行了说明。

    基于文件的连接器节点

    020平方米图4. H2连接器配置对话框左侧的图显示了基于文件的数据库(例如SQLite,H2或MS Access)的节点对话框的示例。最重要的节点设置如下所述:配置:在配置窗口中,您可以选择注册的数据库方言和驱动程序。位置:数据库的位置。您可以提供现有数据库的路径,也可以选择 在内存中创建一个临时数据库,如果该数据库支持此功能,则该数据库将保留在内存中。

    基于服务器的连接器节点

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A4D1hup2-1615987556662)(https://docs.knime.com/2020-12/db_extension_guide/img/020_mssqlserver.PNG)]图5. MS SQL Server连接器配置对话框左侧的图显示了基于服务器的数据库(例如MySQL,Oracle或PostgreSQL)的节点对话框的示例。最重要的节点设置如下所述。配置:在配置窗口中,您可以选择注册的数据库方言和驱动程序。位置:数据库的位置。您应该提供托管数据库的计算机的主机名和端口,以及数据库的名称,数据库名称可能是可选的,具体取决于数据库。身份验证:登录凭据可以通过凭据流变量提供,也可以直接在配置对话框中以用户名和密码的形式提供。还为支持此功能的数据库(例如Hive或Impala)提供Kerberos身份验证。有关Kerberos身份验证的更多信息,请参考《Kerberos用户指南》
    有关“ JDBC参数和高级”选项卡的更多信息,请参考“ JDBC参数高级”选项卡部分。“类型映射”选项卡在“类型映射”部分中进行了说明。

    第三方数据库驱动程序插件

    如前所述,专用于数据库的专用连接器节点已经包含必需的JDBC驱动程序。但是,某些数据库需要特殊的许可,这使我们无法自动安装甚至将必要的JDBC驱动程序与相应的连接器节点捆绑在一起。例如,KNIME提供了其他插件来安装需要特殊许可证的 正式Microsoft SQL Server驱动程序Amazon Redshift驱动程序

    要安装插件,进入文件安装KNIME扩展…。在“*安装”*窗口中,搜索所需的驱动程序(MS SQL Server或Redshift),您将看到类似于下图的内容。然后选择插件进行安装。如果在此窗口中看不到该插件,则说明该插件已安装。安装插件后,重新启动KNIME。之后,当打开专用连接器节点的配置对话框时,应该在驱动程序名称列表中看到相应数据库的已安装驱动程序可用。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-87PQzID5-1615987556665)(https://docs.knime.com/2020-12/db_extension_guide/img/02_driver_marker.PNG)]

    图6.安装窗口

    连接到其他数据库

    通用数据库连接器节点可以连接到任何兼容JDBC的数据库。最重要的节点设置如下所述。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R6TBp19R-1615987556667)(https://docs.knime.com/2020-12/db_extension_guide/img/020_dbconnector.PNG)]

    图7.数据库连接器配置对话框

    数据库类型:选择节点将连接到的数据库的类型。例如,如果数据库是PostgreSQL派生数据库,则选择Postgres作为数据库类型。如果您不知道类型,请选择默认类型。

    数据库方言:选择定义SQL语句生成方式的数据库方言。

    驱动程序名称:为您的特定数据库选择适当的驱动程序。如果没有匹配的JDBC驱动程序,则首先需要对其进行注册,请参阅注册您自己的JDBC驱动程序。仅已为所选数据库类型注册的驱动程序可供选择。

    数据库URL:特定于驱动程序的JDBC URL。在占位符中输入数据库信息,例如主机,端口和数据库名称。

    身份验证:登录凭据可以通过凭据流变量提供,也可以直接在配置对话框中以用户名和密码的形式提供。还为支持此功能的数据库(例如Hive或Impala)提供Kerberos身份验证。有关Kerberos身份验证的更多信息,请参考《Kerberos用户指南》

    所选的数据库类型和方言确定支持哪些数据类型,语句(例如插入,更新和聚合功能)。

    如果在连接第三方数据库时遇到错误,则可以在“高级”选项卡中启用JDBC记录器选项 。如果启用此选项,则所有JDBC操作都将写入KNIME日志中,这可能有助于您识别问题。为了调整KNIME与数据库的交互方式,例如引号标识符,您可以根据数据库的设置在“高级”选项卡下更改默认设置。例如,KNIME使用“作为默认标识符引用,某些数据库(例如Informix)默认不支持。要解决此问题,只需在Advanced Tab中更改或删除标识符定界符设置的值即可。

    注册自己的JDBC驱动程序

    对于某些数据库,KNIME Analytics Platform不包含现成的JDBC驱动程序。在这些情况下,必须首先在KNIME Analytics Platform中注册特定于供应商的JDBC驱动程序。请咨询您的数据库供应商以获取JDBC驱动程序。可以在下面找到一些最受欢迎的JDBC驱动程序的列表。

    JDBC驱动程序必须符合 JDBC 4.1JDBC 4.2

    要在KNIME Server上设置JDBC驱动程序,请参阅KNIME Server上的JDBC驱动程序部分。

    要注册特定于供应商的JDBC驱动程序,请转至文件首选项KNIME数据库

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v7fgq1mW-1615987556670)(https://docs.knime.com/2020-12/db_extension_guide/img/020_adddriver.PNG)]

    图8. DB Preference页面

    单击添加将打开一个新的数据库驱动程序窗口,您可以在其中提供JDBC驱动程序路径和所有必要的信息,例如:

    • ID:JDBC驱动程序的唯一ID,仅由字母数字字符和下划线组成。

    • Name:JDBC驱动程序的唯一名称。

    • 数据库类型:数据库类型。如果选择特定的数据库类型(例如MySQL),则可以在专用连接器节点(例如MySQL Connector)中选择驱动程序。但是,如果数据库不在列表中,则可以选择default,这将为您提供Advanced Tab中的所有可用参数。注册为默认类型的驱动程序仅在通用DB连接器节点中可用。

    • 说明:JDBC驱动程序的可选说明。

    • URL模板:专用连接器节点中使用的JDBC驱动程序连接URL格式。如果您在数据库类型中选择了默认数据库以外的其他数据库,则将使用所选数据库的默认模板来预设URL模板。请参阅下面的“ URL模板”语法信息或“ JDBC URL模板”部分以获取更多信息。

    • URL模板语法信息:单击问号将打开一个信息框,其中提供了有关URL模板语法的一般信息。此外,如果在“数据库类型”中选择默认数据库以外的数据库,则会为所选数据库类型提供一个或多个可能的URL模板示例,您可以在URL模板字段中复制和粘贴这些示例 。

    • Classpath:JDBC驱动程序的路径。如果驱动程序以单个.jar文件形式提供,则单击添加文件;如果驱动程序以包含多个.jar文件的文件夹形式提供,则 单击添加**目录。一些供应商提供.zip文件供下载,需要首先将其解压缩到文件夹中。

    如果JDBC驱动程序需要本机库(例如DLL),则除了JDBC驱动程序.jar文件外,还需要将它们全部放入一个文件夹中,然后通过“*添加目录”*按钮注册该文件夹。
    • 驱动程序类:单击查找驱动程序类将自动检测JDBC驱动程序类和版本。单击按钮后,请选择适当的班级。
    如果您的数据库在“数据库类型”下拉列表中可用,则最好选择它而不是将其设置为default。将数据库类型设置为默认值将允许您仅使用通用DB连接器节点连接到数据库,即使该数据库有专用的连接器节点也是如此。

    020 adddriver2

    图9.注册新的数据库驱动程序窗口

    KNIME Server可以自动将JDBC驱动程序分发给所有连接的KNIME Analytics Platform客户端(请参阅KNIME Server上的JDBC驱动程序)。

    JDBC URL模板

    注册JDBC驱动程序时,需要指定其JDBC URL模板,专用的Connector节点将使用该模板创建最终数据库URL。例如,jdbc:oracle:thin:@<host>:<port>/<database>Oracle瘦驱动程序的有效驱动程序URL模板 。对于大多数数据库,您不必自己查找合适的URL模板,因为 URL模板语法信息至少为数据库提供了一个URL模板示例。

    在URL模板中的变量,例如的值<host><port>或者<database>可以在相应的连接器节点的配置对话框中指定。

    代币:

    • 强制值(例如<database>:引用的令牌必须具有非空白值。括号之间的名称必须是有效的令牌名称(有关支持的令牌的列表,请参阅下文)。
    • 可选值(例如[database]:引用的令牌可能具有空白值。括号之间的名称必须是有效的令牌名称(有关支持的令牌的列表,请参阅下文)。
    • 条件(例如[location=in-memory?mem:<database>]:这适用于基于文件的数据库,例如H2或SQLite。?如果条件为真,则第一个字符将条件与仅包含在URL中的内容分开。当前唯一可用的显式运算符是=,以测试变量的确切值。左边的操作数必须是有效的变量名,右边的操作数是变量要包含的内容所必需的值。内容可能包括强制性令牌和/或可选令牌(<database>/[database]),但没有条件部分。也可以测试是否存在变量。为此,请指定变量名称(例如数据库)作为条件。例如jdbc:mydb://<host>:<port>[database?/databaseName=<database>]将导致 jdbc:mydb://localhost:10000/databaseName=db1如果在节点对话框中指定了数据库名称,则为jdbc:mydb://localhost:10000

    对于基于服务器的数据库,应使用以下令牌:

    • host连接器节点的“*连接设置”*选项卡上“主机名”字段的值。
    • port连接器节点的“*连接设置”*选项卡上“端口”字段的值。
    • database连接器节点的“*连接设置”*选项卡上“数据库名称”字段的值。

    对于基于文件的数据库,应使用以下令牌:

    • location连接器节点的“连接设置”选项卡上的“位置选项。文件值对应于选中Path旁边的单选按钮,内存对应于In-memory旁边的单选按钮。该变量只能在条件中使用。
    • file连接器节点的“*连接设置”*选项卡上“*路径”*字段的值。仅当location的值为时,此变量才有效。file
    • database连接器节点的“*连接设置”选项卡上的“**内存中”*字段的值。仅当location的值为时,此变量才有效。in-memory
    连接器节点的配置对话框中的字段验证取决于引用它们的(包含的)令牌是强制性的还是可选的(请参见上文)。

    常见的JDBC驱动程序列表

    以下是一些常用数据库驱动程序的选定列表,您可以在其中添加其他数据库驱动程序到KNIME Analytics Platform:

    上面的列表仅显示了可以添加的数据库驱动程序的一些示例。如果您的驱动程序不在上面的列表中,仍然可以将其添加到KNIME Analytics Platform。

    高级数据库选项

    JDBC参数

    JDBC参数允许您定义自定义JDBC驱动程序连接参数。参数的值可以是常量,变量,凭证用户,凭证密码或KNIME URL。有关支持的连接参数的更多信息,请咨询您的数据库供应商。

    下图显示了具有不同变量类型的SSL JDBC参数的示例。您可以设置一个布尔值来启用或禁用SSL,也可以使用KNIME相对URL指向SSLTrustStore位置,或对trustStorePassword参数使用凭据输入。

    第020章

    图10. JDBC Parameters选项卡

    进阶标签

    通过“*高级”*选项卡中的设置,您可以定义KNIME框架属性,例如连接处理,高级SQL方言设置或查询日志记录选项。在这里,您可以调整KNIME与数据库的交互方式,例如应如何创建发送到数据库的查询。在“*元数据”*部分中,您还可以在配置节点期间禁用元数据获取,或在这样做时更改超时,如果您连接到需要更多时间来计算所创建查询的元数据的数据库,或者您已连接,则可能有必要通过慢速网络访问它。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZT7dbeQP-1615987556686)(https://docs.knime.com/2020-12/db_extension_guide/img/020_advanced.PNG)]

    图11.高级选项卡

    完整的可用选项描述如下:

    • 验证查询:要执行的验证连接可用的查询。如果未指定查询,则KNIME调用Connection.isValid() 方法来验证连接。仅检查错误,不需要结果。
    • CASE表达式:生成的语句中是否允许使用CASE表达式。
    • CREATE TABLE CONSTRAINT名称:是否可以在CREATE TABLE语句中为CONSTRAINT定义定义名称。
    • DROP TABLE语句:DROP TABLE语句是否是语言的一部分。
    • 派生表引用表引用是否可以派生表。
    • 从查询插入表:是否支持通过select语句插入表,例如INSERT INTO T1(C1)(SELECT C1 FROM T2)。
    • JDBC记录器:启用或禁用JDBC操作的记录器。
    • JDBC语句取消:取消节点执行时启用或禁用JDBC语句取消尝试。
    • 节点取消轮询间隔:两次检查节点执行是否已取消之间要等待的毫秒数。有效范围:[100,5000]。
    • 在configure中检索:在数据库节点的configure方法中启用或禁用检索元数据。
    • 检索配置超时:取消配置方法中的元数据检索之前要等待的时间间隔(以秒为单位)。有效范围:[1,)。
    • 事务:启用或禁用数据库事务,例如提交/回滚。如果您要连接的数据库(例如Google Big Query或Dremio)不支持事务,请禁用此选项。
    • CREATE“ temporary” TABLE语法:用于创建临时表的一个或多个关键字。
    • CREATE TABLE“如果不存在”的语法:表创建语句条件“如果不存在”的语法。如果为空,则不会自动创建此类语句,尽管节点仍可能无法从原子上实现相同的行为。
    • 提取大小:JDBC驱动程序的提示,当需要更多行时,应从数据库中获取行数。有效范围:[0,)。
    • 还原数据库连接:加载已执行的连接器节点时,启用或禁用数据库连接的还原。
    • 仅用空格分隔标识符:如果选中,则仅用空格分隔标识符,例如列或表名。
    • 标识符定界符(关闭):标识符的闭合定界符,例如列名和表名。
    • 标识符定界符(打开):标识符(例如列和表名*)的*打开定界符。
    • 替换标识符中的非单词字符:是否替换标识符中的非单词字符,例如表名或列名。非单词字符包括字母数字字符(az,AZ,0-9)和下划线(_)以外的所有字符。
    • 标识符非单词字符替换:启用标识符替换后,将替换标识符中的非单词字符。空值将删除非单词字符。
    • 表参考关键字表参考中相关名称之前的关键字。
    • 将JDBC参数附加到URL:启用或禁用将参数附加到JDBC URL,而不是将其作为属性传递。
    • 将用户名和密码附加到URL:启用或禁用将用户名和密码附加到JDBC URL,而不是将其作为属性传递。
    • JDBC URL初始参数分隔符:表示JDBC URL中参数开始的字符。
    • JDBC URL参数分隔符:在JDBC URL中分隔两个JDBC参数的字符。
    • JDBC URL的最后一个参数后缀:在JDBC URL的最后一个参数之后附加的字符。
    • 减号运算:是否支持减号设定操作。

    专用的数据库连接器(例如Microsoft SQL Server连接器)通常仅显示上述选项的子集,因为大多数选项是预定义的,例如数据库是否支持CASE语句等。

    例子

    在本节中,我们将提供有关如何连接到一些广为人知的数据库的示例。

    连接到Oracle

    第一步是获取Oracle JDBC驱动程序。然后转到文件首选项KNIME数据库,然后单击添加

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DxSUEp4z-1615987556689)(https://docs.knime.com/2020-12/db_extension_guide/img/020_driveroracle.PNG)]

    图12.注册新的Oracle驱动程序

    在新的数据库驱动程序窗口中,提供以下信息:

    • ID:Oracle,但是您可以输入自己的驱动程序ID,只要它仅包含字母数字字符和下划线即可。
    • 名称:Oracle,但是您可以输入自己的驱动程序名称。
    • 数据库类型:下拉列表中提供Oracle,因此数据库类型设置为oracle
    • 说明:例如,我的Oracle驱动程序。
    • URL模板:通过在“数据库”类型中选择oracle,URL模板将自动预设为Oracle的默认JDBC URL模板(服务名),即。有关更多可能的模板,只需单击下面的URL模板语法信息。请参阅“ JDBC URL模板”部分,以获取有关支持的令牌(例如主机,端口和数据库)的更多信息。jdbc:oracle:thin:@<host>:<port>/<database>
    • 类路径:单击添加文件以添加Oracle JDBC驱动程序文件。驱动程序文件的路径将出现在Classpath区域中。
    • 驱动程序类:单击“查找驱动程序类”将自动检测所有可用的JDBC驱动程序类和版本,在本例中为版本12.2.0中的oracle.jdbc.OracleDriver

    填写所有信息后,单击“确定”,新添加的驱动程序将出现在数据库驱动程序首选项表中。单击“*应用并关闭”*以应用更改,您可以开始连接到Oracle数据库。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1wbRWeCY-1615987556695)(https://docs.knime.com/2020-12/db_extension_guide/img/020_driveroracle2.PNG)]

    图13.数据库首选项页面

    Oracle有一个专用的连接器节点,称为Oracle连接器,有关如何使用专用连接器节点进行连接的信息,请参阅连接到预定义的数据库

    连接到Databricks

    要连接到Databricks,您需要安装 KNIME Databricks Integration

    下一步是从官方网站下载Databricks Simba JDBC驱动程序 到您的计算机。然后转到文件首选项KNIME数据库,然后单击添加

    KNIME为Databricks提供了Apache Hive JDBC驱动程序,您可以将其用作后备驱动程序。但是强烈建议使用上面链接中提供的官方JDBC驱动程序。

    020驱动程序

    图14.注册新的Databricks驱动程序

    在新的数据库驱动程序窗口中,提供以下信息:

    • ID:Databricks,但是您可以输入自己的驱动程序ID,只要它仅包含字母数字字符和下划线即可。
    • 名称:Databricks,但是您可以输入自己的驱动程序名称。
    • 数据库类型:下拉列表中提供了Databricks,因此数据库类型设置为databricks
    • 说明:例如,我的Databricks驱动程序。
    • URL模板:通过在“数据库”类型中选择databrick,URL模板将自动预设为Databricks的默认JDBC URL模板,即。有关更多可能的模板,只需单击下面的URL模板语法信息。请参阅“ JDBC URL模板”部分,以获取有关支持的令牌(例如主机,端口和数据库)的更多信息。jdbc:spark://<host>:<port>/default
    • 类路径:单击添加文件以添加Databricks JDBC驱动程序文件。驱动程序文件的路径将出现在Classpath区域中。
    • 驱动程序类:单击“查找驱动程序类”将自动检测所有可用的JDBC驱动程序类和版本,在本例中为2.6.0版本中的com.simba.spark.jdbc4.Driver

    填写所有信息后,单击“确定”,新添加的驱动程序将出现在数据库驱动程序首选项表中。单击“*应用并关闭”*以应用更改。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c3imvTUG-1615987556705)(https://docs.knime.com/2020-12/db_extension_guide/img/020_driverdatabricks2.PNG)]

    图15.数据库首选项页面

    要连接到Databricks,您需要首先创建一个连接到现有Databricks集群的Databricks环境。为此,请使用“*创建Databricks环境”*节点。在配置窗口中,您需要提供:

    在“数据库端口” →“*驱动程序”*选项卡中,可以选择驱动程序名称,在本例中为我们之前注册的Databricks Simba JDBC驱动程序。

    对于身份验证,Databricks强烈建议使用令牌。请参阅Databricks AWSAzure 文档中的身份验证以获取有关个人访问令牌的更多信息。

    连接到Google BigQuery

    要连接到BigQuery,您需要安装 KNIME BigQuery Extension

    由于许可证限制,BigQuery JDBC驱动程序不是KNIME Analytics Platform的一部分,需要单独下载和注册。要下载BigQuery JDBC驱动程序,请访问 官方网站。然后转到文件首选项KNIME数据库,然后单击添加

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BBOUJ3SR-1615987556706)(https://docs.knime.com/2020-12/db_extension_guide/img/020_driverbigquery.PNG)]

    图16.注册新的BigQuery驱动程序

    在新的数据库驱动程序窗口中,提供以下信息:

    • ID:BigQuery,但您可以输入自己的驱动程序ID,只要它仅包含字母数字字符和下划线即可。
    • 名称:BigQuery,但是您可以输入自己的驱动程序名称。
    • 数据库类型:BigQuery在下拉列表中可用,因此数据库类型设置为bigquery
    • 说明:例如,我的Google BigQuery驱动程序。
    • URL模板:通过在“数据库”类型中选择bigquery,URL模板将自动预设为BigQuery的默认JDBC URL模板,即。请直接参考下面的URL模板语法信息JDBC URL模板部分,以获取有关支持的令牌(例如主机,端口和数据库)的更多信息。jdbc:bigquery://<host>:<port>;ProjectId=<database>
    • 类路径:单击添加文件以添加BigQuery JDBC驱动程序文件。驱动程序文件的路径将出现在Classpath区域中。
    • 驱动程序类:单击“查找驱动程序类”将自动检测所有可用的JDBC驱动程序类和版本,在本例中为1.2.0版中的com.simba.googlebigquery.jdbc42.Driver

    填写所有信息后,单击“确定”,新添加的驱动程序将出现在数据库驱动程序首选项表中。单击“*应用并关闭”*以应用更改。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7rwYyZJK-1615987556710)(https://docs.knime.com/2020-12/db_extension_guide/img/020_driverbigquery2.PNG)]

    图17.数据库首选项页面

    要连接到BigQuery服务器,建议使用Google身份验证(API密钥)节点对Google API进行身份验证并创建连接,然后使用Google BigQuery Connector节点连接到BigQuery。另外,您也可以通过“ JDBC参数”选项卡指定特定于驱动程序的身份验证信息。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NF6dggd9-1615987556715)(https://docs.knime.com/2020-12/db_extension_guide/img/020_connect_to_bigquery.PNG)]

    图18.连接到BigQuery

    在*Google身份验证(API密钥)*节点的配置窗口中,您需要提供:

    • 服务帐户电子邮件服务帐户的电子邮件地址。请参阅 BigQuery 文档,以获取有关如何创建服务帐户的更多信息。
    • P12密钥文件位置:专用P12密钥文件的路径。创建服务帐户电子邮件时,您可以JSON或P12密钥/凭证的形式创建服务帐户密钥。请注意,此处仅支持P12键。
    • 范围:将为此连接授予的范围。请参阅可用BigQuery API范围列表上的Google文档 。例如,选择Google BigQuery Connection可以查看和管理Google BigQuery中的数据。
    *Google身份验证(API密钥)*节点 仅支持P12密钥!

    020 Google Auth conf

    图19. Google身份验证(API密钥)节点的配置窗口

    连接成功后,它可以被用来作为输入谷歌服务连接谷歌的BigQuery连接器节点。配置窗口包含以下内容:

    • 驱动程序名称:我们在注册驱动程序时先前提供的BigQuery驱动程序的名称。在我们的示例中是BigQuery
    • 主机名:Google BigQuery服务器的主机名(或IP地址)。
    • 端口:Google BigQuery服务器正在监听的端口。默认端口是443。
    • 数据库名称:您要连接的数据库的名称(项目ID)。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dsKH0rTA-1615987556724)(https://docs.knime.com/2020-12/db_extension_guide/img/020_bigquery_conf.PNG)]

    图20. Google BigQuery Connector节点的配置窗口

    连接到Microsoft SQL Server

    默认情况下,专用的Microsoft SQL Server连接器节点与jTDS for Microsoft SQL Server驱动程序捆绑在一起。如果要使用Microsoft SQL Server官方驱动程序 ,则KNIME提供了一个附加插件来安装驱动程序。请参阅第三方数据库驱动程序插件以获取有关该插件及其安装方式的更多信息。

    也可以使用您自己的Microsoft SQL Server驱动程序。要注册您自己的驱动程序,请参阅“注册您自己的JDBC驱动程序” 部分。但是,Microsoft SQL Server驱动程序可能需要几个本机库,例如DLL。在这种情况下,除了数据库驱动程序窗口中的JDBC文件之外,您还需要将所有必需的本机库复制到一个文件夹中,然后通过“*添加目录”*按钮注册此文件夹.jar。如果您使用提供的Microsoft SQL Server jTDS驱动程序或通过插件安装的Microsoft SQL Server官方驱动程序,则不需要此步骤。

    所有必需的文件(例如sqljdbc_auth.dll或ntlmauth.dll)都是提供的驱动程序的一部分。

    安装JDBC驱动程序之后,可以使用Microsoft SQL Server连接器节点开始连接到Microsoft SQL Server。请参阅连接到预定义的数据库,以获取有关如何使用专用连接器节点进行连接的更多信息。

    Microsoft SQL Server支持所谓的 Windows本机身份验证模式。如果要使用此模式,只需在配置窗口的“*身份验证”*设置中选择“ 无/本机身份**验证”。以下各节说明如何使用此模式,具体取决于您使用的驱动程序。

    使用Microsoft SQL Server的官方驱动程序进行Windows本机身份验证

    要将此模式与Microsoft SQL Server提供的官方驱动程序一起使用,KNIME Analytics Platform需要在Windows计算机上运行,并且您需要登录到要连接到的Microsoft SQL Server接受的Windows域中。此外,您需要在“ JDBC参数”选项卡中指定以下条目: 值为true的**IntegratedSecurity。有关更多详细信息,请参见 Microsoft文档

    使用Microsoft SQL Server的jTDS驱动程序进行Windows本机身份验证

    如果您正在使用提供的用于Microsoft SQL Server的jTDS驱动程序,并且KNIME Analytics Platform在登录到要连接的Microsoft SQL Server接受的Windows域的Windows计算机上运行,那么您无需指定任何JDBC参数。

    如果KNIME Analytics Platform在非Windows计算机上运行,则需要提供要用于身份验证的Windows域用户的用户名和密码。为此,请选择“*凭据”*选项或“*用户名和密码”选项。此外,还需要指定在以下条目JDBC参数标签: 域名<< Windows域名>>*作为值。有关更多详细信息,请参见jTDS FAQ中对domain属性的描述,或参见README.sso

    连接到Apache Hive™

    要连接到Hive,您需要安装 KNIME大数据连接器扩展

    默认情况下,专用的Hive连接器节点与开源Apache Hive JDBC驱动程序捆绑在一起。还支持专有驱动程序,但需要首先注册,例如Cloudera提供的Hive JDBC连接器。

    在此示例中,我们要使用专有的Cloudera Hive JDBC驱动程序连接到Hive。第一步是为Cloudera Enterprise下载最新的 Hive JDBC驱动程序。然后转到文件首选项KNIME数据库,然后单击添加

    020蜂巢

    图21.注册新的Apache Hive驱动程序

    在新的数据库驱动程序窗口中,提供以下信息:

    • ID:cloudera_hive,但是您可以输入自己的驱动程序ID,只要它仅包含字母数字字符和下划线即可。
    • 名称:Cloudera Hive,但是您可以输入自己的驱动程序名称。
    • 数据库类型:Hive在下拉列表中可用,因此数据库类型设置为hive
    • 说明:例如,我的Hive驱动程序。
    • URL模板:请确保该字段包含jdbc:hive2://<host>:<port>/[database]。请参阅“ JDBC URL模板”部分,以获取有关支持的令牌(例如主机,端口和数据库)的更多信息。
    • 类路径:单击添加文件以添加.jar包含Hive JDBC驱动程序的文件。驱动程序文件的路径将出现在Classpath区域中。
    • 驱动程序类:单击查找驱动程序类将自动检测所有可用的JDBC驱动程序类和版本。请确保选择com.cloudera.hive.jdbc41.HS2Driver

    最后,单击“确定”,新添加的驱动程序将出现在数据库驱动程序首选项表中。单击“*应用并关闭”*以应用更改,您可以开始连接到Hive数据库。

    020驱动程序

    图22.数据库首选项页面

    Hive有一个称为Hive Connector的专用连接器节点,有关如何使用专用连接器节点进行连接的信息,请参阅连接到预定义的数据库

    连接到Apache Impala™

    要连接到Apache Impala,您需要安装 KNIME大数据连接器扩展

    默认情况下,专用的Impala连接器节点与开源的Apache Hive JDBC驱动程序捆绑在一起,该驱动程序与Impala兼容。还支持专有驱动程序,但需要先注册,例如Cloudera提供的Impala JDBC连接器。

    在此示例中,我们想使用专有的Cloudera Impala JDBC驱动程序连接到Impala。第一步是为Cloudera Enterprise下载最新的 Impala JDBC驱动程序。然后转到文件首选项KNIME数据库,然后单击添加

    020驱动程序

    图23.注册新的Apache Impala驱动程序

    在新的数据库驱动程序窗口中,提供以下信息:

    • ID:cloudera_impala,但是您可以输入自己的驱动程序ID,只要它仅包含字母数字字符和下划线即可。
    • 名称:Cloudera Impala,但是您可以输入自己的驱动程序名称。
    • 数据库类型:Impala在下拉列表中可用,因此数据库类型设置为impala
    • 说明:例如,我的Impala驱动程序。
    • URL模板:通过在数据库类型中选择impala,URL模板将自动预设为Impala的默认JDBC URL模板,即。有关更多可能的模板,只需单击下面的URL模板语法信息。请参阅“ JDBC URL模板”部分,以获取有关支持的令牌(例如主机,端口和数据库)的更多信息。jdbc:impala://<host>:<port>/[database]
    • 类路径:单击添加文件以添加.jar包含Impala JDBC驱动程序文件的文件。驱动程序文件的路径将出现在Classpath区域中。
    • 驱动程序类:单击查找驱动程序类将自动检测所有可用的JDBC驱动程序类和版本,在本例中为com.cloudera.impala.jdbc.Driver

    最后,单击“确定”,新添加的驱动程序将出现在数据库驱动程序首选项表中。单击“*应用并关闭”*以应用更改,您可以开始连接到Impala数据库。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BvXJuavo-1615987556736)(https://docs.knime.com/2020-12/db_extension_guide/img/020_driverimpala2.PNG)]

    图24.“数据库首选项”页面

    Impala有一个称为Impala Connector的专用连接器节点,有关如何使用专用连接器节点进行连接的信息,请参阅连接到预定义的数据库

    从数据库读取

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uT3RdOwo-1615987556738)(https://docs.knime.com/2020-12/db_extension_guide/img/030_reading.PNG)]

    图25.从数据库读取

    上图是有关如何从数据库读取数据的示例。在此示例中,我们想将存储在H2数据库中的航班数据集读取 到KNIME数据表中。

    首先,您需要一个连接器节点来建立与数据库的连接,在上面的示例中,它是一个H2数据库。根据我们要连接的数据库,有几个专用的连接器节点。有关如何连接到数据库的更多详细信息,请参阅“连接到数据库”部分。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j3r7gmYm-1615987556740)(https://docs.knime.com/2020-12/db_extension_guide/img/030_tableselector-hidden.PNG)]图26. DB Table Selector配置对话框建立连接后,下一步是使用DB Table Selector节点,该节点允许基于输入数据库连接以交互方式选择表或视图。左侧的图显示了“*数据库表选择器”*节点的配置对话框。在顶部,您可以输入架构和要选择的表/视图名称,在此示例中,我们要选择“航班”表。

    按下“*选择表”*按钮将打开“数据库元数据浏览器”窗口,其中列出了数据库中的可用表/视图。

    此外,勾选“*自定义查询”*复选框将使您可以编写自己的自定义SQL查询来缩小结果范围。它接受任何SELECT语句,并且占位符#table#可用于引用通过“选择表格”按钮选择的表格

    输入类型映射选项卡允许您定义的数据库类型映射规则KNIME类型。有关此的更多信息,请参考“类型映射”部分。

    该节点的输出是一个DB Data连接,其中包含数据库信息,并且SQL查询由选择输入表或用户输入的自定义查询的框架自动构建。要在KNIME Analytics Platform中读取选定的表或视图,可以使用DB Reader节点。执行此节点将在数据库中执行输入的SQL查询,输出将是存储在KNIME数据表中的结果,该表将存储在运行KNIME Analytics Platform的计算机上。

    数据库元数据浏览器

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HT7lVkuW-1615987556742)(https://docs.knime.com/2020-12/db_extension_guide/img/030_metadata-cols.PNG)]图27.数据库元数据浏览器数据库元数据浏览器显示数据库模式,包括所有表/视图及其对应的列和列数据类型。首先,它从数据库中获取元数据并将其缓存以备后用。通过单击一个元素(模式/表/视图),它可以显示所包含的元素。要选择表或视图,请选择名称,然后单击“确定”或双击元素。窗口顶部的搜索框使您可以搜索数据库中的任何表或视图。底部有一个刷新按钮,用于重新获取模式列表,并带有有关上一次刷新模式多长时间的时间参考。
    如果您刚刚创建了一个表,但是在架构列表中找不到该表,则可能是元数据浏览器缓存不是最新的,因此请尝试单击右下角的刷新按钮来刷新列表。

    查询生成

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-frTdJ9x9-1615987556743)(https://docs.knime.com/2020-12/db_extension_guide/img/040_queryoverview.PNG)]图28. DB Query节点成功连接到数据库后,将有一组节点提供数据库内数据操作,例如聚合,过滤,联接等。数据库节点具有可视化的用户界面,并 根据配置窗口中的用户设置在后台自动构建SQL查询,因此无需编码即可与数据库交互。每个节点的输出是一个SQL查询,该查询与该节点内执行的操作相对应。可以通过DB Data outport视图查看生成的SQL查询。

    可视查询生成

    040查询产生

    图29.执行数据库内数据操作的工作流示例

    上图显示了数据库内数据操作的示例。在此示例中,我们从H2数据库读取 航班数据集。首先,我们对行进行过滤,以便仅采用满足特定条件的排期。然后,我们计算到达每个唯一目的地机场的平均飞行时间。最后,我们将平均值与原始值结合在一起,然后将结果读入KNIME Analytics Platform。

    第一步是连接到数据库并选择我们要使用的适当表。

    数据库行过滤器

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZS37gy2C-1615987556750)(https://docs.knime.com/2020-12/db_extension_guide/img/040_rowfilter3.PNG)]

    图30.“ DB行过滤器”配置对话框

    选择表格后,您可以开始使用数据。首先,我们使用“ DB行过滤器”节点根据特定条件过滤行。上图显示了DB行过滤器的配置对话框。左侧有一个“预览”区域,该区域列出了要应用于输入数据的过滤器的所有条件。过滤器可以通过逻辑运算符(例如AND或OR)进行组合和分组。只有满足指定过滤条件的行才会保留在输出数据表中。底部有以下选项:

    • 添加条件:在列表中添加更多条件
    • :创建一个新的逻辑运算符(AND或OR)
    • 取消分组:删除当前选择的逻辑运算符
    • 删除:从列表中删除选定的条件

    要创建新条件,请单击Add_Condition按钮。要编辑条件,请在条件列表中选择,它将在右侧的条件编辑器中显示所选条件。编辑器至少包含两个下拉列表。最左边的一个包含输入数据表中的列,其旁边的一个包含与所选列类型兼容的运算符,例如=,!=,<,>。根据选择的操作,将显示第三个(可能是第四个)输入字段,以输入或选择过滤器值。值字段旁边的按钮将获取所选列的所有可能值,然后可在值字段中进行选择。

    单击“预览”列表中的逻辑运算符,将允许您在“与”或“或”之间进行切换,并可以通过单击“*取消分组”*来删除该运算符。

    如我们的示例所示,我们希望返回满足以下条件的所有行:

    • 源自芝加哥奥黑尔机场(ORD)或哈茨菲尔德-杰克逊亚特兰大机场(ATL)
    • AND发生在2017年6月
    • 并且在5到45分钟之间有轻微的到达延迟

    数据库组

    040组2

    图31. DB GroupBy:手动聚合

    下一步是使用DB GroupBy节点计算到达每个唯一目的地机场的平均飞行时间。要检索每个组的行数,请在“高级设置”中选中“*添加计数(*)”*复选框。可以通过结果列名称字段更改组计数列的名称。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sl0st2Bu-1615987556757)(https://docs.knime.com/2020-12/db_extension_guide/img/040_groupby.PNG)]

    图32. DB GroupBy:组设置

    要计算每个目标机场的平均飞行时间,我们需要按“*组”*选项卡中的“*目的地”*列进行 分组,然后在“*手动汇总”*选项卡中,选择“ ActualElapsedTime”列(空中时间)和AVG作为汇总方法。

    数据库连接器

    040细木工

    图33. DB Joiner:Joiner设置

    为了将结果连接回原始数据,我们使用DB Joiner节点,该节点根据两个表的连接列来连接两个数据库表。在“ Joiner设置”选项卡中,有用于选择联接模式的选项,包括“内部联接”,“完全外部联接”等,以及“联接”列。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PR1Zi0bE-1615987556764)(https://docs.knime.com/2020-12/db_extension_guide/img/040_joiner2.PNG)]

    图34. DB Joiner:列选择

    在“*列选择”*选项卡中,可以从每个表中选择要包含在输出表中的列。默认情况下,底部输入的连接列不会显示在输出表中。

    高级查询构建

    有时,仅使用预定义的DB节点来操作数据库中的数据是不够的。本节将说明一些允许用户编写自己的SQL查询的数据库节点,例如DB QueryDB Query ReaderParametriczed DB Query Reader节点。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zOBJBrdV-1615987556766)(https://docs.knime.com/2020-12/db_extension_guide/img/040_advancedquery.PNG)]

    图35.具有高级查询节点的示例工作流

    每个将DB数据对象作为输入并返回DB数据对象作为输出的DB操作节点,将传入的SQL查询包装到子查询中。但是,某些数据库不支持子查询,如果是这种情况,请使用DB Query Reader节点从数据库中读取数据。

    下图显示了“数据库查询”节点的配置对话框。其他允许用户编写SQL语句的高级查询节点的配置对话框提供了类似的用户体验。有一个文本区域可以编写您自己的SQL语句,通过按Ctrl + Space可以提供语法突出显示和代码完成。在下部,有一个“*评估”*按钮,您可以在其中评估SQL语句并返回结果的前10行。如果SQL语句中有错误,则在“评估”窗口中将显示一条错误消息。左侧是“数据库元数据浏览器”窗口,通过该窗口,您可以浏览数据库元数据,例如表和视图及其对应的列。这 数据库列列表包含连接的数据库表中可用的列。双击任何一项,将其名称插入SQL语句区域中的当前光标位置。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s8BjFF0x-1615987556768)(https://docs.knime.com/2020-12/db_extension_guide/img/040_dbquery2.PNG)]

    图36. DB Query节点的“配置”对话框

    数据库查询

    数据库查询”节点修改来自传入数据库数据连接的输入SQL查询。前任的SQL查询由占位符表示,#table#在执行期间将被替换。然后,修改后的输入查询在输出端口可用。

    数据库查询阅读器

    执行输入的SQL查询,并将结果作为KNIME数据表返回。该节点不会更改或包装查询,因此支持各种返回数据的语句。

    该节点支持SELECT之外的其他SQL语句,例如DESCRIBE TABLE

    参数化的数据库查询阅读器

    该节点允许您执行具有不同参数的SQL查询。它遍历输入KNIME表,并从输入表中获取值以参数化输入SQL查询。由于该节点具有KNIME数据表输入,因此它提供了一个类型映射选项卡,可用于更改映射规则。有关“类型映射”选项卡的更多信息,请参考“类型映射”部分。

    数据库结构操作

    数据库结构操纵是指对数据库表的任何操纵。以下工作流演示了如何使用DB Table Remover从数据库中删除现有表以及如何使用DB Table Creator节点创建新表 。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s2SSpLAa-1615987556770)(https://docs.knime.com/2020-12/db_extension_guide/img/050_dbstructmanip.PNG)]

    图37.数据库结构操纵工作流的示例

    数据库表删除器

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8axGD8Q6-1615987556772)(https://docs.knime.com/2020-12/db_extension_guide/img/050_remover.PNG)]

    图38. DB Table Remover配置对话框

    该节点从传入数据库连接定义的数据库中删除表。执行此节点等效于执行SQL命令 DROP。在配置对话框中,有一个选项可以选择要删除的数据库表。该配置与“*数据库表选择器”*节点中的配置相同,您可以在其中输入相应的模式和表名,或在“数据库元数据浏览器”中选择它。

    在配置窗口中可以使用以下选项:

    级联:选择此选项意味着删除其他表/视图引用的表将不仅删除表本身,还删除所有相关表和视图。如果您的数据库不支持该选项,那么它将被忽略。

    如果表不存在则失败:选择此选项意味着,如果所选表在数据库中不存在,则节点将失败。默认情况下,此选项未启用,因此即使数据库中不存在所选表,该节点仍将成功执行。

    数据库表创建器

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mrwmEO8g-1615987556775)(https://docs.knime.com/2020-12/db_extension_guide/img/050_tablecreator.PNG)]

    图39. DB Table Creator:设置

    该节点创建一个新的数据库表。该表可以手动创建,也可以根据输入数据表规范动态创建。它支持高级选项,例如指定列是否可以包含空值或指定主键或唯一键以及SQL类型。

    启用“使用动态设置”选项时,数据库表结构由输入KNIME数据表的结构定义。该选项卡,并仅帮助阅读,以验证所创建的表的结构。可以通过更改类型映射来影响创建的数据库表结构,例如,通过定义应将KNIME双列作为字符串列写入数据库,DB Table Creator将为所有双列选择等效字符串的数据库类型。可以通过“*动态类型设置”*和“*动态密钥设置”*选项卡进一步影响此映射以及密钥生成。

    在设置选项卡中,您可以输入相应的架构和表名称。提供以下选项:

    创建临时表:选择此选项将创建一个临时表。临时表的处理方式(例如其存在时间,范围)等取决于您使用的数据库。有关此的更多详细信息,请咨询您的数据库供应商。

    *如果表存在,则失败:如果表已经存在,*选择此选项将使节点失败,并显示特定于数据库的错误消息。默认情况下,此选项是禁用的,因此该节点将成功执行,并且如果已经存在则不创建任何表。

    使用动态设置:选择此项将允许节点根据输入的KNIME表和“动态设置”选项卡动态定义数据库表的结构,例如列名和类型。仅在启用此选项后,“动态类型设置”和“动态列设置”选项卡才可用。与基于**KNIME的SQL类型映射中定义的映射相比,基于名称的SQL类型映射中定义的映射具有更高的优先级 。如果两个选项卡中均未定义映射,则使用基于数据库连接器节点的“类型映射”定义的默认映射 。请注意,在动态设置模式下, 标签变为只读,以预览动态设置的效果。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I5YwLuaD-1615987556777)(https://docs.knime.com/2020-12/db_extension_guide/img/050_tablecreator2.PNG)]

    图40. DB Table Creator:列

    在“*列”*选项卡中,您可以手动修改输入表中的列名称与其对应的SQL类型之间的映射。您可以添加或删除列,并为特定列设置适当的SQL类型。但是,如果选择了“使用动态设置”,则此选项卡将变为只读选项,并用作动态设置的预览。

    在“*键”*选项卡中,您可以手动将某些列设置为主键/唯一键。与“*列”*选项卡中一样,如果启用了“使用动态设置”,则此选项卡将变为只读状态并用作动态设置的预览。

    附加选项选项卡中,您可以编写附加的SQL语句,该语句将附加在CREATE TABLE语句之后,例如,存储参数。该语句将附加到自动生成的CREATE TABLE语句的末尾,并作为单个语句执行。

    在“动态列设置”中,有两种类型的SQL类型映射:基于名称和基于KNIME。

    • 在*基于名称的SQL类型映射中,*您可以基于列名称为一组列定义默认的SQL类型映射。您可以添加一个新行,其中包含应该映射的列的名称模式。名称模式可以是带通配符的字符串或正则表达式。与基于**KNIME的SQL类型映射中定义的映射相比,基于名称的SQL类型映射中定义的 映射具有更高的优先级。
    • 在基于*KNIME类型的SQL类型映射中,*您可以基于KNIME数据类型定义默认的SQL类型映射。您可以添加包含应映射的KNIME数据类型的新行。

    在“*动态键设置”中,*您可以基于列名动态定义键定义。您可以添加一个新行,其中包含应用于定义新键的列的名称模式。名称模式可以是带通配符的字符串或正则表达式。

    支持的通配符是*(匹配任意数量的字符)和?。(匹配一个字符),例如KNI *将匹配所有以KNI开头的字符串,例如KNIME而KNI?将仅匹配以KNI开头,后跟第四个字符的字符串。

    DB操作

    本节描述了用于数据库内操作的各种DB节点,例如DB DeleteDB WriterDB InsertDB UpdateDB MergeDB Loader 节点,以及数据库事务节点。

    060概述

    图41.数据库操作示例

    数据库删除

    该节点从数据库中的选定表中删除行。输入是描述数据库的DB连接端口,还有一个KNIME数据表,其中包含定义从数据库中删除哪些行的值。它根据输入表中选定的列删除数据库中的数据行。因此,所有选定的列名都需要与数据库中的列名完全匹配。仅将删除数据库表中与KNIME输入数据表中所选列的值组合匹配的行。

    下图显示了“ *DB删除”*节点的配置对话框。用于DB操作的其他节点的配置对话框非常相似。您可以输入表名称及其对应的架构,或在“数据库元数据浏览器”中通过单击“选择表”选择表名称

    另外,需要选择输入表中的标识列。所选KNIME表列的名称必须与所选数据库表中的名称匹配。数据库表中所有与输入的KNIME数据表中的选定列匹配的值都将被删除的行。在SQL中,这等效于各WHERE列。共有三个选项:

    • 错误失败:如果选中该节点,则在执行过程中发生任何错误时该节点将失败,否则即使输入行之一在数据库中引起异常,该节点也将成功执行。
    • 附加删除状态列:如果选中,它将在输出表中添加两个额外的列。第一列包含该DELETE语句影响的行数。大于或等于零的数字表示该操作已成功执行。值-2表示该操作已成功执行,但受影响的行数未知。第二列将包含警告消息(如果存在)。
    • 禁用数据库数据输出端口:如果选中,它将禁用数据库数据输出端口和在节点执行结束时执行元数据查询,这可能会导致不支持子查询的数据库出现问题。

    060删除

    图42.“ *DB删除”*节点的“配置”对话框

    使用“*输出类型映射”*选项卡,可以定义从KNIME类型到数据库类型的映射规则。有关此的更多信息,请参考“类型映射”部分。

    数据库作家

    该节点将从输入的KNIME数据表中选择的值插入到指定的数据库表中。它执行的功能与“数据库插入”节点相同,但是,如果在插入值之前不存在该数据库表,它还会自动创建数据库表。新创建的表将为每个选定的输入KNIME列都有一个列。数据库列名称将与输入KNIME列的名称相同。数据库列类型是从给定的KNIME类型和类型映射配置派生的 。所有数据库列都将允许缺少值(例如NULL)。

    如果要控制创建的数据库表的属性,请使用DB Table Creator节点。

    还有一个选项可以通过启用配置窗口中的删除现有表选项来覆盖现有表。启用该选项将从数据库中删除任何具有给定名称的表,然后创建一个新表。如果未选择此选项,则新数据行将追加到现有表中。一旦数据库表存在,该节点将以与“数据库插入”节点相同的方式将所有KNIME输入行写入数据库表。

    数据库插入

    该节点将从输入的KNIME数据表中选择的值插入到指定的数据库表中。所有选定的列名都需要与数据库表中的列名完全匹配。

    数据库更新

    该节点使用输入的KNIME数据表的选定列中的值更新指定数据库表中的行。标识列用于WHERESQL语句的一部分,标识数据库表中将更新的行。要更新的列用在SETSQL语句的一部分中,并包含将被写入所选数据库表中匹配行的值。

    数据库合并

    “*数据库合并”*节点是“*数据库更新”*和“*数据库插入”*节点的组合。如果数据库支持该功能,它将执行一条MERGE 语句,该语句将插入所有新行或更新所选数据库表中的所有现有行。如果数据库不支持合并功能,则节点首先尝试更新数据库表中的所有行,然后在更新过程中插入未找到匹配项的所有行。所选KNIME表列的名称需要与应在其中更新行的数据库表的名称匹配。

    数据库加载器

    从4.3开始,DB Loader节点采用了新的文件处理框架,该框架允许在各种文件系统之间进行无缝迁移。有关更多详细信息,请查阅《KNIME文件处理指南》

    该节点执行特定于数据库的批量加载功能,只有某些数据库(例如Hive,Impala,MySQL,PostgreSQL和H2)支持将大量数据加载到现有数据库表中。

    将数据加载到表中时,大多数数据库不会执行数据检查,这可能会导致数据表损坏。该节点会执行一些初步检查,例如检查输入的KNIME数据表的列顺序和列名是否与所选数据库表兼容。但是,它不检查列类型的兼容性或值本身。请确保KNIME表的列类型和值与数据库表兼容。

    根据数据库的不同,通常会使用中间文件格式(例如CSV,Parquet,ORC)来提高效率,这可能需要将文件上传到服务器。如果需要上传文件,则可以使用文件处理节点和数据库支持的任何协议,例如SSH / SCP或FTP。将数据加载到表中之后,如果数据库不再需要该已上传的文件,则该文件将被删除。如果由于某种原因不需要上传或存储文件,则文件连接会阻止执行。

    某些数据库(例如MySQL和PostgreSQL)支持基于文件和基于内存的上载,这要求数据库具有不同的权限。例如,如果您无权执行基于文件的数据加载,请尝试使用基于内存的方法。

    如果数据库支持各种加载方法(基于文件或基于内存),则可以在“选项”选项卡中选择该方法,如下例所示。否则,“*加载程序模式”*选项将不会出现在配置对话框中。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vxRqms8L-1615987556783)(https://docs.knime.com/2020-12/db_extension_guide/img/060_dbloader-option.PNG)]

    图43. DB Loader:选项

    根据所连接的数据库,对话框设置可能会更改。例如,MySQL和PostgreSQL使用CSV文件进行数据传输。为了更改CSV文件的创建方式,请转到“*高级”*标签。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y3Qew1fX-1615987556785)(https://docs.knime.com/2020-12/db_extension_guide/img/060_dbloader-advanced.PNG)]

    图44. DB Loader:高级

    数据库事务节点

    数据库扩展还提供了用于模拟数据库事务的节点。事务使您可以将多个数据库数据操作操作分组为一个工作单元。这个单元要么全部执行,要么根本不执行。

    数据库事务开始

    “ *DB事务启动”*节点使用输入数据库连接启动事务。只要事务正在进行中,就不能在事务外部使用输入数据库连接。根据 隔离级别,在事务处理过程中,其他连接可能看不到数据库中的任何更改。事务使用已连接数据库的默认隔离级别。

    数据库交易结束

    DB事务结束节点结束该输入数据库连接的事务。节点以提交结束事务,如果成功执行,则所有其他用户都可以看到所有更改。否则,节点将通过回滚来结束事务,从而使数据库返回到事务开始时的状态。

    该节点有2个输入端口。第一个是事务性数据库连接端口,应从事务处理链的末端连接到该端口。第二个端口应包含来自“*数据库事务开始”*节点的输出的事务数据库连接 。如果事务成功完成并执行了提交,则来自第一个输入端口的数据库连接将被转发到输出端口,否则,如果发生回退,则将转发来自第二个输入端口的数据库连接。

    下图显示了事务节点的示例。在此示例中,事务由两个DB Writer节点组成,这些节点连续将数据写入同一表。如果在写入的任何步骤中发生错误,则更改将不会执行,并且数据库将在事务开始时返回到先前的状态。如果没有错误发生,则将提交对数据库的更改。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-doUarfwx-1615987556787)(https://docs.knime.com/2020-12/db_extension_guide/img/060_transaction.PNG)]

    图45.数据库事务节点

    类型映射

    数据库框架允许您定义规则以从数据库类型映射 到KNIME类型,反之亦然。这是必须的,因为数据库支持不同的类型集,例如,Oracle仅具有一个精度不同的数字类型来表示整数,而且还浮点数,而KNIME使用不同的类型(整数,长整数,双精度)来表示它们。

    特别是日期和时间格式在不同的数据库中受不同的支持。例如, 只有少数数据库支持在KNIME中用于表示定义的时区内的时间点的分区日期时间类型。但是,使用类型映射框架,您可以强制KNIME在将其写入数据库表之前将区域日期时间类型自动转换为字符串,并在读取该字符串时将其转换回区域日期时间值。

    类型映射框架由针对从KNIME Analytics Platform视图点指定的每个方向的一组映射规则组成:

    • 输出类型映射:KNIME类型到数据库类型的映射
    • 输入类型映射:从数据库类型到KNIME类型的映射

    每个映射方向都有两组规则:

    • 按名称映射:基于列名称(或正则表达式)和类型的映射规则。仅考虑匹配两个条件的列。
    • 按类型映射:基于KNIME或数据库类型的映射规则。将考虑指定数据类型的所有列。

    可以在分析工作流中的各个位置定义和更改类型映射。基本配置可以在不同的连接器节点中完成。它们带有明智的数据库特定的默认映射。类型映射规则是数据库连接数据库数据连接的一部分, 并且继承自先前的节点。除了连接器节点外,还为所有数据库节点提供KNIME数据表,还有一个Output Type Mapping选项卡,用于将输入KNIME列的节点的数据类型映射到相应数据库列的类型。

    可以通过DB Type Mapper节点更改任何DB Data连接的数据库类型到KNIME类型的映射

    数据库类型映射器

    通过选择给定数据库类型的KNIME类型,“ *DB Type Mapper”*节点将数据库更改为后续节点的KNIME类型映射配置。配置对话框允许您添加新的或更改现有的类型映射规则。所有新的或更改的规则均标记为粗体。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b9915H1p-1615987556789)(https://docs.knime.com/2020-12/db_extension_guide/img/070_typemapper.PNG)]

    图46. DB Type Mapper配置对话框

    来自先前节点的规则不能删除,只能更改。

    移民

    本节说明如何将包含旧数据库节点(旧版)的工作流迁移到新数据库框架。该工作流程迁移工具可以用来指导您完成整个过程和数据库遗留节点转换为对应的新数据库节点。有关旧节点与新节点之间的映射,请查看“节点名称映射”部分中的列表。

    所有先前注册的JDBC驱动程序都需要重新注册。有关如何在新数据库框架中注册驱动程序的更多信息,请参考“注册您自己的JDBC驱动程序”部分。

    工作流程迁移工具

    工作流迁移工具仍处于预览状态。我们将继续添加新功能并修改现有功能。

    工作流迁移工具可帮助您将包含旧数据库节点的现有工作流迁移到新数据库节点。该工具不会更改任何现有工作流程,而是在原始工作流程的副本上执行迁移。

    作为示例,我们可以在下图中看到一个包含数据库遗留节点的工作流。目标是使用工作流迁移工具来帮助我们将旧式节点迁移到新的数据库节点。

    080迁移讯息

    图47.包含数据库旧版节点的工作流

    为了启动工作流迁移工具,我们只需要打开包含要迁移的数据库旧节点的工作流。将在工作流顶部显示一条消息,其中包含用于迁移工作流的选项(请参见上图)。

    点击*迁移工作流程…将打开迁移向导窗口,如下图所示。在此窗口中,您可以更改要迁移的工作流程(包含数据库遗留节点的工作流程),并输入新工作流程的名称,该名称是旧工作流程的副本,但数据库遗留节点被新工作流程替换(如果可供使用的话)。新工作流程的默认名称是带有(迁移的)*后缀的旧工作流程的名称。

    原始工作流程不会在整个迁移过程中进行修改。

    080向导1

    图48.迁移工具:选择工作流程

    单击下一步转到下一页,如下所示。在此阶段,将分析工作流程,并将在此处列出存在迁移规则的所有数据库旧节点及其等效的新节点。该工具还会执行初步检查并显示任何潜在问题。如果您同意映射建议,请单击“*下一步”*执行迁移过程。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3sVGotc4-1615987556797)(https://docs.knime.com/2020-12/db_extension_guide/img/080_wizard2.PNG)]

    图49.迁移工具:显示潜在的映射

    迁移过程完成后,您可以看到如下所示的迁移报告。如果在迁移过程中发生任何警告或问题,报告中将显示相应的消息。您还可以选择以HTML格式保存并打开迁移报告。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RZfJZ9av-1615987556799)(https://docs.knime.com/2020-12/db_extension_guide/img/080_wizard3.PNG)]

    图50.迁移工具:迁移报告

    下图显示了已迁移的工作流程,其中所有数据库旧式节点都被新的数据库节点替换,同时保持所有设置不变。

    080迁移结果

    图51.包含迁移的数据库节点的新工作流

    禁用工作流迁移消息

    如果您不想迁移并想禁用迁移消息,请单击消息中的“禁用此消息”。将打开“首选项” →“*数据库(旧版)”*页面,您可以在其中取消选中“提供迁移包含旧数据库节点的工作流”选项 ,如下图所示。单击“应用并关闭”以保存设置,如果您打开包含旧数据库节点的工作流,该消息将不再显示。要撤消此设置,只需再次打开“首选项” →“*数据库(旧版)”*页面并启用该复选框即可。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-52l8sj0T-1615987556804)(https://docs.knime.com/2020-12/db_extension_guide/img/080_disable_message.PNG)]

    图52.禁用迁移消息

    节点名称映射

    下表显示了数据库旧节点和新数据库节点之间的映射。

    数据库旧版节点新数据库节点
    数据库类型映射
    亚马逊雅典娜连接器亚马逊雅典娜连接器
    Amazon Redshift连接器Amazon Redshift连接器
    数据库申请标签DB Apply-Binner
    数据库自动绑定DB自动装箱
    数据库列过滤器数据库列过滤器
    数据库列重命名数据库列重命名
    数据库连接表读取器数据库读取器
    数据库连接表编写器数据库连接表编写器
    数据库连接器数据库连接器
    数据库删除数据库删除
    数据库删除表数据库表删除器
    数据库分组数据库组
    数据库连接器数据库连接器
    数据库循环可以替换为参数化DB查询阅读器
    数据库数字容器DB数位binner
    数据库枢轴DB枢轴
    数据库查询数据库查询
    数据库阅读器数据库查询阅读器
    数据库行过滤器数据库行过滤器
    数据库采样数据库采样
    数据库排序器数据库分类器
    数据库SQL执行器DB SQL执行器
    数据库表连接器可以用数据库连接器和数据库表选择器替换
    数据库表创建者数据库表创建器
    数据库表选择器数据库表选择器
    数据库更新数据库更新
    数据库作家数据库作家
    H2连接器H2连接器
    蜂巢连接器蜂巢连接器
    蜂巢装载机数据库加载器
    Impala连接器Impala连接器
    Impala加载程序数据库加载器
    Microsoft SQL Server连接器Microsoft SQL Server连接器
    MySQL连接器MySQL连接器
    参数化数据库查询参数化的数据库查询阅读器
    PostgreSQL连接器PostgreSQL连接器
    SQL提取数据库查询提取器
    SQL注入数据库查询注入器
    SQLite连接器SQLite连接器
    Vertica连接器Vertica连接器
    Microsoft Access连接器
    数据库插入
    数据库合并
    数据库列重命名(正则表达式)
    数据库分区

    服务器设置

    本节包含与执行包含KNIME Server上的数据库节点的工作流有关的所有内容。

    KNIME服务器上的JDBC驱动程序

    KNIME Server允许您定义 自定义配置文件, 以在其自己的执行程序以及KNIME Analytics Platform客户端上自动设置JDBC驱动程序。

    除了定制概要文件之外,还可以使用首选项文件直接在执行程序上注册JDBC驱动程序 。但是,在这种情况下,服务器执行程序和所有KNIME Analytics Platform客户端的首选项需要手动保持同步,以便两端都可以使用相同的驱动程序。

    服务器端步骤

    1. 创建一个配置文件夹<server-repository>/config/client-profiles。文件夹的名称与配置文件的名称相对应。该文件夹将保存首选项和其他要分发的文件。

    2. .jar包含JDBC驱动程序的文件复制到配置文件文件夹中。

    3. 在配置文件文件夹中,创建一个.epf具有以下内容的首选项文件(文件名以结尾):

      /instance/org.knime.database/drivers/ <驱动程序ID> / database_type = <数据库>
      /instance/org.knime.database/drivers/ <DRIVER_ID> / driver_class = <DRIVER_CLASS_NAME>
      /instance/org.knime.database/drivers/<DRIVER_ID>/paths/0 = $ {profile:location} / <DRIVER_JAR>
      /instance/org.knime.database/drivers/ <DRIVER_ID> / url_template = <URL_TEMPLATE>
      /instance/org.knime.database/drivers/ <DRIVER_ID> / version = <DRIVER_VERSION>
      

      在哪里:

      • <DRIVER_ID>:JDBC驱动程序的唯一ID,仅由字母数字字符和下划线组成。

      • <DATABASE>:数据库类型。请查阅“注册您自己的JDBC驱动程序”中显示的首选项页面,以获取当前可用类型的列表。

      • <DRIVER_CLASS_NAME>:JDBC驱动程序类,例如oracle.jdbc.OracleDriver对于Oracle。

      • <DRIVER_JAR>.jar包含JDBC驱动程序类的文件名(包括文件扩展名)。请注意,该变量${profile:location}代表下载定制概要文件的每个客户端上概要文件文件夹的位置。每个客户都会将其自动替换为正确的位置。

      • <URL_TEMPLATE>:用于驱动程序的JDBC URL模板。请参阅“ JDBC URL模板”部分以获取更多信息。请注意,冒号(:)和反斜杠(\)必须以反斜杠转义。例子:

        jdbc \:oracle \:thin \:@ <主机> \:<端口> / <数据库>
        
      • <DRIVER_VERSION>:JDBC驱动程序的版本,例如12.2.0。该值可以随意选择。

    4. 通过将此信息添加到knime.ini文件中,需要使KNIME Server执行者知道自定义配置文件,以便他们可以向KNIME Server请求。请参阅《KNIME服务器管理指南》的相应部分 以了解如何进行设置。

    请注意,本节末尾有特定于数据库的示例。

    客户端步骤

    需要使KNIME Analytics Platform客户端知道自定义配置文件,以便他们可以向KNIME Server请求。请参阅《KNIME服务器管理指南》的相应部分,以 获取有关如何进行设置的完整参考。

    在KNIME Analytics Platform中,您可以转到文件首选项KNIME定制配置文件。这将打开“*定制配置文件”*页面,您可以在其中选择要使用的KNIME服务器和配置文件。更改将在重启KNIME Analytics Platform后生效。

    要查看是否已添加驱动程序,请转至文件首选项KNIME数据库。在此页面中,通过定制配置文件添加的驱动程序在驱动程序ID之后标记为origin:配置文件(请参见下图)。这些驱动程序可以编辑,但不能删除。要删除配置文件驱动程序,请转到“*自定义配置文件”*页面,然后取消选择相应的配置文件。

    090的个人资料

    图53. DB Preferences页面

    默认JDBC参数

    默认JDBC参数为服务器管理员提供了一种方法,可以在由KNIME Server上运行的工作流建立的JDBC连接上注入JDBC参数。这些参数优先于连接器节点中指定的值。要指定其他JDBC参数,请将以下行添加到.epf定制概要文件中:

    /instance/org.knime.database/drivers/ <DRIVER_ID> /attributes/additional/org.knime.database.util.DerivableProperties/knime.db.connection.jdbc.properties/ <JDBC_PARAMETER> / type = <TYPE>
    /instance/org.knime.database/drivers/ <DRIVER_ID> /attributes/additional/org.knime.database.util.DerivableProperties/knime.db.connection.jdbc.properties/ <JDBC_PARAMETER> / value = <VALUE>
    

    在哪里:

    • <DRIVER_ID>:JDBC驱动程序的唯一ID。
    • <JDBC_PARAMETER>:要设置的JDBC参数的名称。
    • <TYPE>and <VALUE>:一个类型和值,它指定将JDBC参数设置为什么。<TYPE>并且<VALUE>可以被选择如下:
      • 设置<TYPE>CONTEXT_PROPERTY允许指定与工作流程上下文相关的属性。<VALUE>可以设置为以下之一:
        • context.workflow.name:KNIME工作流程的名称。
        • context.workflow.path:相对于安装点的工作流路径。
        • context.workflow.absolute-path:绝对工作流程路径。
        • context.workflow.user:执行工作流程的KNIME Server用户的名称。
        • context.workflow.temp.location:工作流临时位置的路径。
        • context.workflow.author.name:工作流程作者的姓名。
        • context.workflow.last.editor.name:上次编辑工作流程的用户名。
        • context.workflow.creation.date:工作流程的创建日期。
        • context.workflow.last.time.modified:工作流程的最后修改时间。
      • 设置<TYPE>CREDENTIALS_LOGIN允许从凭证流变量中指定登录名。设置<VALUE>为流变量的名称。
      • 设置<TYPE>CREDENTIALS_PASSWORD允许从凭证流变量中指定密码。设置<VALUE>为流变量的名称。
      • 设置<TYPE>FLOW_VARIABLE允许指定流变量。设置<VALUE>为流变量的名称。
      • 设置<TYPE>LITERAL允许指定不进行任何进一步替换的文字值。设置<VALUE>为文字值。
      • 设置<TYPE>LOCAL_URL可以指定中的URL <VALUE>,例如“ knime” URL。
    请注意,本节末尾有特定于数据库的示例。

    保留的JDBC参数

    在KNIME Server上执行工作流时,例如DelegationUID对于使用基于Simba的驱动程序的Impala / Hive连接,某些JDBC参数可能会导致安全问题 。可以将此类参数标记为*保留,*以防止工作流在KNIME Server上使用它们。要将参数设置为保留参数,请将以下行添加到.epf自定义配置文件中:

    /instance/org.knime.database/drivers/<DRIVER_ID>/attributes/reserved/org.knime.database.util.DerivableProperties/knime.db.connection.jdbc.properties/<JDBC_PARAMETER>=true
    

    或更短的版本:

    /instance/org.knime.database/drivers/<DRIVER_ID>/attributes/reserved/*/knime.db.connection.jdbc.properties/<JDBC_PARAMETER>=true
    

    在哪里:

    • <DRIVER_ID>:JDBC驱动程序的唯一ID。
    • <JDBC_PARAMETER>:JDBC参数的名称。
    请注意,本节末尾有特定于数据库的示例。

    示例:Oracle

    在此示例中,我们将在KNIME Server上注册专有的 Oracle JDBC驱动程序

    1. 下载专有的 Oracle JDBC驱动程序

    2. 在其中创建配置文件文件夹<server-repository>/config/client-profiles并命名Oracle(例如)。

    3. ojdbc8.jar从下载的驱动程序复制到新创建的配置文件文件夹。

    4. 在配置文件文件夹中,创建一个名为oracle.epf(例如)的新文件,其内容如下:

      /instance/org.knime.database/drivers/Oracle/database_type=oracle
      /instance/org.knime.database/drivers/Oracle/driver_class=oracle.jdbc.OracleDriver
      /instance/org.knime.database/drivers/Oracle/paths/0=${profile:location}/ojdbc8.jar
      /instance/org.knime.database/drivers/Oracle/url_template=jdbc\:oracle\:thin\:// <主机> \:<端口> / <数据库>
      /instance/org.knime.database/drivers/Oracle/version=12.2.0
      

    示例:Apache Hive™

    与Apache Hive的连接需要进一步的设置步骤,具体取决于所使用的JDBC驱动程序。在此示例中,我们将展示如何:

    1. 在KNIME Server上注册Cloudera提供的专有 Hive JDBC驱动程序
    2. 在KNIME Server上配置用户模拟(对于嵌入式和专有的Hive JDBC驱动程序)。

    基于Simba的专有JDBC驱动程序注册

    如果首选使用嵌入式开源Apache Hive JDBC驱动程序,请跳至下一部分
    1. 从Cloudera网站下载专有的Hive JDBC驱动程序

    2. 在其中创建配置文件文件夹<server-repository>/config/client-profiles并命名ClouderaHive(例如)。

    3. HiveJDBC41.jar从下载的JDBC驱动程序复制到新创建的配置文件文件夹。

    4. 在配置文件文件夹中,创建一个名为hive.epf(例如)的新首选项文件,其中包含以下内容:

      /instance/org.knime.database/drivers/cloudera_hive/database_type=hive
      /instance/org.knime.database/drivers/cloudera_hive/driver_class=com.cloudera.hive.jdbc41.HS2Driver
      /instance/org.knime.database/drivers/cloudera_hive/paths/0=${profile:location}/HiveJDBC41.jar
      /instance/org.knime.database/drivers/cloudera_hive/url_template=jdbc\:hive2\:// <主机> \:<端口> / [数据库]
      /instance/org.knime.database/drivers/cloudera_hive/version=2.6.0
      
    5. 根据建议,如果KNIME Server必须模拟工作流用户,请转到下一部分

    Hive上的用户模拟

    本示例将设置Hive JDBC驱动程序(嵌入式或专有),以便KNIME Server可以 在JDBC连接上模拟工作流用户

    在Hive上激活用户模拟取决于所使用的JDBC驱动程序:

    • 对于嵌入式Apache Hive JDBC驱动程序,将以下行添加到KNIME Server首选项文件中
    /instance/org.knime.database/drivers/hive/attributes/additional/org.knime.database.util.DerivableProperties/knime.db.connection.jdbc.properties/hive.server2.proxy.user/type=CONTEXT_PROPERTY
    /instance/org.knime.database/drivers/hive/attributes/additional/org.knime.database.util.DerivableProperties/knime.db.connection.jdbc.properties/hive.server2.proxy.user/value=context.workflow 。用户
    /instance/org.knime.database/drivers/hive/attributes/reserved/*/knime.db.connection.jdbc.properties/hive.server2.proxy.user=true
    
    • 对于专有的基于Simba的JDBC驱动程序,将以下行添加到首选项文件(使用在上一步(步骤4)中创建的首选项文件)。
    /instance/org.knime.database/drivers/cloudera_hive/attributes/additional/org.knime.database.util.DerivableProperties/knime.db.connection.jdbc.properties/DelegationUID/type=CONTEXT_PROPERTY
    /instance/org.knime.database/drivers/cloudera_hive/attributes/additional/org.knime.database.util.DerivableProperties/knime.db.connection.jdbc.properties/DelegationUID/value=context.workflow.user
    /instance/org.knime.database/drivers/cloudera_hive/attributes/reserved/*/knime.db.connection.jdbc.properties/DelegationUID=true
    

    示例:Apache Impala™

    在本示例中,我们将在KNIME Server上注册Cloudera提供的专有 Impala JDBC驱动程序。本示例设置了驱动程序,以便KNIME Server可以 在JDBC连接上模拟工作流用户

    如果您使用嵌入式开源Apache Hive JDBC驱动程序(用于Impala),则无需执行此步骤。但是,请注意,在这种情况下,由于驱动程序的限制,无法在KNIME Server上模拟用户。
    1. 从Cloudera网站下载专有的Impala JDBC

    2. 在其中创建配置文件文件夹<server-repository>/config/client-profiles并命名ClouderaImpala(例如)。

    3. ImpalaJDBC41.jar从下载的JDBC驱动程序复制到新创建的配置文件文件夹。

    4. 在配置文件文件夹中,创建一个名为impala.epf(例如)的新首选项文件,其中包含以下内容:

      /instance/org.knime.database/drivers/cloudera_impala/database_type=impala
      /instance/org.knime.database/drivers/cloudera_impala/driver_class=com.cloudera.impala.jdbc.Driver
      /instance/org.knime.database/drivers/cloudera_impala/paths/0=${profile:location}/ImpalaJDBC41.jar
      /instance/org.knime.database/drivers/cloudera_impala/url_template=jdbc\:impala\:// <主机> \ :: <端口> / [数据库]
      /instance/org.knime.database/drivers/cloudera_impala/version=2.6.0
      /instance/org.knime.database/drivers/cloudera_impala/attributes/additional/org.knime.database.util.DerivableProperties/knime.db.connection.jdbc.properties/DelegationUID/type=CONTEXT_PROPERTY
      /instance/org.knime.database/drivers/cloudera_impala/attributes/additional/org.knime.database.util.DerivableProperties/knime.db.connection.jdbc.properties/DelegationUID/value=context.workflow.user
      /instance/org.knime.database/drivers/cloudera_impala/attributes/reserved/*/knime.db.connection.jdbc.properties/DelegationUID=true
      

      请注意,最后三行使用DelegationUIDJDBC参数来强制 用户模拟 (推荐使用)。如果您不希望KNIME Server模仿工作流用户,则可以删除最后三行。

    展开全文
  • azure云数据库 You have to agree with me, when public clouds were introduced your thought was that you will never put your production data in there. Our idea was that your data is exposed, insecure ...
  • 本站第一时间为各位小伙伴带来最好的数据库管理工具Navicat Premium Mac全新汉化激活版!Navicat Premium for mac是一个可多重连接的数据库管理工具,Navicat的功能足以符合专业开发人员的所有需求,但是对数据库...
  • 迁移scm数据库

    千次阅读 2017-10-12 14:46:39
    4.spark运行报错:org.apache.hadoop.security.AccessControlException: Permission denied: user=root, access=WRITE, inode=”/user”:hdfs:supergroup:drwxr-xr-x 解决方法:将export HADOOP_USER_NAME=hdfs...
  • 数据库中获取spring配置参数

    千次阅读 2015-12-08 10:36:06
     总的来说,常见的系统参数往往都难免有以下几类,比如数据库的配置信息、webservice的地址、密钥的盐值、消息队列序列名、消息服务器配置信息、缓存服务器配置信息等等。  对于这种问题一般有以下几种解决...
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
  • 默认情况下,所有 Ceph 工具都使用 XFS 配置 Ceph 当你启动 Ceph 服务时,初始化过程 将激活一系列在后台运行的守护程序。一个 Ceph 的存储集群上运行三种类型的守护程序: Ceph Monitor Ceph Manager Ceph OSD 支持...
  • 应用服务器接收来自于Web浏览器的用户请求,根据应用领域业务规则执行相应的数据库应用程序,通过数据库访问接口向数据库服务器提出数据操作请求;接收来自于数据库服务器的数据访问结果,并通过客户端将结果返回给...
  • java 面试题 总结

    2009-09-16 08:45:34
    SessionBean在J2EE应用程序中被用来完成一些服务器端的业务操作,例如访问数据库、调用其他EJB组件。EntityBean被用来代表应用系统中用到的数据。 对于客户机,SessionBean是一种非持久性对象,它实现某些在服务器上...
  • 数据库内核月报是阿里云RDS-数据库内核组维护的一个关于数据库的技术博客,上面的文章质量是有保证的。不过有一点不太友好的是,这个网站首页非常简洁,只是按照时间月份来归档文章,并没有按照...
  • sap LICENSE KEY和 ACCESS KEY 破解 .

    千次阅读 2012-02-09 10:32:59
     经过很长时间的折腾终于搞定了ECC 6.0的LICENSE KEY和 ACCESS KEY 。终于可以创建用户,开发程序了。。。。  谢谢 http://kemiya.net/forum.php 论坛的 kmy指点和Evan.Chen的博客   解决步骤:
  • 数据库

    2018-06-03 22:48:51
    固定的数据库角色是:DB_access admin:可以在数据库中添加或删除Windows登录名和组以及SQLServer登录。DB_backupOperator:可以备份数据库。DB_datareader:可以查看数据库中所有用户表中的任何数据。DB_...
  • ECshop 数据库表结构

    千次阅读 2018-07-13 13:31:07
    ECshop 数据库表结构 -- 表的结构 `ecs_account_log` CREATE TABLE IF NOT EXISTS `ecs_account_log` ( `log_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID号', `user_id` mediumint(8) ...
  • Greenplum数据库集群安装文档 说明:本文档是在同事指导下,根据操作步骤以及自己理解所整理 ------阿莲 未说明服务器或者执行用户的地方均是在所有服务器上使用root用户执行一遍 一、安装前环境配置 本次集群环境为...
  • 数据库学习

    2019-04-30 11:18:54
    DATABASE() 返回当前数据库名 USER()或SYSTEM_USER() 返回当前登陆用户名 VERSION() 返回MySQL服务器的版本 二、delete跟truncate区别 ①DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的...
  • Mysql5.5安装教程 [名称]:Mysql5.5 [大小]:99 MB [语言]:简体中文 [安装环境]:Win7/Win8/Win10 ...MySQL是一个开放源码的小型关联式数据库管理系统,MySQL优化了SQL查询算法,有效地提高查询速度;支持
  • 大商创数据库架构

    2018-04-20 15:36:00
    ECSHOP 数据库结构说明 (适用版本v2.7.3) 1.account_log 用户账目日志表 字段类型Null/默认注释 log_id mediumint(8) 否 / 自增 ID 号 user_id mediumint(8) 否 / 用户登录后保存在session...
  • 1.account_log 用户账目日志表 字段 类型 Null/默认 注释 log_id mediumint(8) 否 / 自增 ID 号 user_id mediumint(8) 否 / 用户登录后保存在session中的id号,跟users表中user_id对应...用户
  • 淘宝数据库的内核月报非常值得学习和借鉴(地址:http://mysql.taobao.org/monthly/)。 但首页都是以年份和月份为索引,搜索起来比较耗时。 这里做了一张表 可以以文章题目为索引查看,mysqldump导出的(截止2019年...
  • 激活“ Google Firebase”插件。 它包括现成的跨平台代码,可与Google云进行交互! 在Android和iOS上进行实时测试 (Live Testing on Android & iOS) If you target both Android and iOS, you’ll want to test ...
  • 操作步骤: a、新建一个空白Access数据库文件; b、打开新建的数据库; c、左上角【文件】>【选项】>【信任中心】>【信任中心设置】>【宏设置】>【启用所有宏】。 三、界面展示 1、主界面:包含增删改查,记录选择等...
  • MySQL和PostgreSQL数据库安全配置

    千次阅读 2016-05-29 22:10:51
    0x00 MySQL和PostgreSQL安全配置针对开源数据库MySQL和PostgreSQL的安全配置主要主要通过身份鉴别、访问控制、安全审计、入侵防范、资源控制五个方面来实现。0x01 身份鉴别MySQL和PostgreSQL均可以实现身份鉴别功能...
  • Mysql数据库

    千次阅读 2019-01-10 17:58:14
    关系型数据库基础 安装MySQL 管理数据库和表 函数和存储过程 用户和权限管理 MySQL架构 存储引擎 服务器选项,系统和状态变量 优化查询和索引管理 锁和事务管理 日志管理 备份还原 MySQL集群 1、关系型...
  • Linux实用教程(第三版)

    万次阅读 多人点赞 2019-08-27 22:55:59
    第一章 Linux系统初步了解 本章内容 1.1 Linux系统简介 1.2 Linux系统的特点和组成 1.3 Linux版本介绍 1.4 Red Hat Linux系统概述 1.1 Linux系统简介 1.1.1 什么是Linux 1.1.2 Linux系统的产生 ...&...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,199
精华内容 2,079
关键字:

access数据库激活密钥