NiFi中如何为Psql表新增文件名列?用什么Processor与SQL
选用Processor
选择PutSQL处理器即可。
该处理器原生支持PostgreSQL的DDL、DML语句执行,既可以完成表结构新增列的操作,后续写入业务数据时也可以直接复用,支持直接引用NiFi流文件自带的文件名属性完成字段赋值,不需要额外切换组件。
对应SQL语句
1. 新增文件名列的表结构变更SQL
执行前将代码中的替换为你的实际业务表名改成你当前PSQL表的真实名称,示例中文件名列命名为source_file_name,你可以根据业务需要调整列名,255长度的varchar类型足够存储常规文件名:
ALTER TABLE 替换为你的实际业务表名 ADD COLUMN source_file_name VARCHAR(255);
2. 数据入库时自动写入文件名的SQL参考
如果需要在数据写入环节自动把当前处理的源文件名存入该列,可以直接在PutSQL的SQL配置项中通过NiFi表达式语言引用流文件默认携带的filename属性,示例插入语句如下:
INSERT INTO 替换为你的实际业务表名(cattlegendernm, price, source_file_name) VALUES (?, ?, '${filename}');
说明:语句中前两个
?是cattlegendernm、price字段的参数占位符,如果你从流文件内容读取这两个字段的值,PutSQL会自动按字段顺序匹配取值;如果你的字段传参逻辑有调整,对应修改占位符规则即可。
注意:执行表结构变更前建议先备份原有表数据,避免操作失误影响现有业务。
内容的提问来源于stack exchange,提问作者Lewis
相关产品推荐
相关产品推荐

