oracle 如何将当前设置为空字符串“”的属性设置为null

ndasle7k  于 2023-02-18  发布在  Oracle
关注(0)|答案(1)|浏览(384)

我正在用EvaluateJsonPath读入一个文件。
某些属性值设置为空字符串。
当我处理日期时,这是非常有问题的。
如果我在调用插入或更新时使用TO_DATE,并且DATE'',则NiFi失败,因为例如

sql.args.2.value is '', which cannot be converted to a timestamp.

数据库设置为允许字段为空值。
当使用NiFi发送数据时,如果DATE的值可能为空,并且null对条目有效,那么如何处理DATE

次更新

我创建了一个只有3列的测试表:id、TEST_DATE、TEST_TIMESTAMP。
使用NiFi处理器"PutSQL",当读入的数据中存在有效值时,我能够插入1列或两列。
问题是当数据不包含日期值,NiFi将其视为空""时,处理器尝试使用消息来源的空值""进行调用。
有没有办法在SQL INSERT语句中有条件地检查类似于NVL(?,NULL)的参数值?

6kkfgxo0

6kkfgxo01#

处理创建sql.args.#.value和空值时的解决方案如下。
在定义sql.args.#.value的UpdateAttributes处理器上,您可以在ADVANCED部分下创建一个RULE。
1.创建一个规则来检查用于设置值的属性是否不为空${arg:isEmpty():not()}
1.创建sql.args.#.值并将其设置为${arg}
只有在sql.args.#.value不为空时,此操作才会创建该值。在读入?(sql.args.#.values)的处理器上,它将使用空值代替"“空字符串值。在处理ORACLE数据库字段类型DATE和TIMESTAMP时,这会产生很大问题。
是的,我还验证了当您有许多值并且使用空值代替定义sql.args.#. value时,SQL是否正常工作。
例如,如果您有6个字段/值要设置,而第4个字段(sql.args.4.value)由于值为空而未设置,则语句仍将对其他字段正确工作。
SQL变量1.值=变量1 SQL变量2.值=变量2 SQL变量3.值=变量3 SQL变量5.值=变量5 SQL变量6.值=变量6

INSERT INTO TABLEXYZ (
 COL1,
 COL2,
 COL3,
 COL4,
 COL5,
 COL6)
VALUES (
 ?,
 ?,
 ?,
 ?,
 ?,
 ?
)

相关问题