Talend 在 PostgreSQL 中将 JSON 字符串转换为 JSON 或 JSONB
Talend Casting of JSON string to JSON or JSONB in PostgreSQL
我正在尝试使用 Talend 获取存储在 MySQL 中的 JSON 数据作为 VARCHAR 数据类型并将其导出到 PostgreSQL 9.4 table 中以下类型:
CREATE TABLE myTable( myJSON as JSONB)
当我尝试 运行 作业时,出现以下错误:
ERROR: column "json_string" is of type json but expression is of type
character varying
Hint: You will need to rewrite or cast the expression. Position:
54
如果我使用 python 或只是普通的 SQL 和 PostgreSQL insert 我可以插入一个字符串,例如 '{"Name":"blah"} ' 它明白了。
INSERT INTO myTable(myJSON) VALUES ('{"Name":"blah"}');
知道如何在 Talend 中完成此操作吗?
您可以通过打开 "tPostgresqlOutput" 组件上的 "Advanced Settings" 选项卡来添加 type-cast。考虑以下示例:
在这种情况下,"tPostgresqlOutput_1" 的输入行有一列 data
。此列的类型为 String
,并映射到类型为 VARCHAR
的数据库列 data
(Talend 默认建议):
接下来,打开 tPostgresqlOutput_1
的组件设置并找到 "Advanced settings" 选项卡:
在此选项卡上,您可以用新表达式替换现有的data
列:
- 在 name 列中,指定目标列名称。
- 在 SQL 表达式 列中,进行类型转换。在这种情况下:
"?::json"`. Note the usage of the placeholder character
?`` 将替换为原始值。
- 在位置中,指定
Replace
。这将用您的 SQL 表达式(包括类型转换)替换 Talend 建议的值。
- 作为参考列使用源值。
这应该可以解决问题。
这是一个示例架构,其中我有输入行 'r',其中有 question_json 和 choice_json 列,它们是 json 字符串。我从中知道我想提取的关键,这就是我的做法
您应该查看 question_value 和 choice_value 列。希望对你有帮助
我正在尝试使用 Talend 获取存储在 MySQL 中的 JSON 数据作为 VARCHAR 数据类型并将其导出到 PostgreSQL 9.4 table 中以下类型:
CREATE TABLE myTable( myJSON as JSONB)
当我尝试 运行 作业时,出现以下错误:
ERROR: column "json_string" is of type json but expression is of type character varying
Hint: You will need to rewrite or cast the expression. Position: 54
如果我使用 python 或只是普通的 SQL 和 PostgreSQL insert 我可以插入一个字符串,例如 '{"Name":"blah"} ' 它明白了。
INSERT INTO myTable(myJSON) VALUES ('{"Name":"blah"}');
知道如何在 Talend 中完成此操作吗?
您可以通过打开 "tPostgresqlOutput" 组件上的 "Advanced Settings" 选项卡来添加 type-cast。考虑以下示例:
在这种情况下,"tPostgresqlOutput_1" 的输入行有一列 data
。此列的类型为 String
,并映射到类型为 VARCHAR
的数据库列 data
(Talend 默认建议):
接下来,打开 tPostgresqlOutput_1
的组件设置并找到 "Advanced settings" 选项卡:
在此选项卡上,您可以用新表达式替换现有的data
列:
- 在 name 列中,指定目标列名称。
- 在 SQL 表达式 列中,进行类型转换。在这种情况下:
"?::json"`. Note the usage of the placeholder character
?`` 将替换为原始值。 - 在位置中,指定
Replace
。这将用您的 SQL 表达式(包括类型转换)替换 Talend 建议的值。 - 作为参考列使用源值。
这应该可以解决问题。
这是一个示例架构,其中我有输入行 'r',其中有 question_json 和 choice_json 列,它们是 json 字符串。我从中知道我想提取的关键,这就是我的做法
您应该查看 question_value 和 choice_value 列。希望对你有帮助