资源链接在文章末尾,包含文件:

本次获取的数据是来自【中国商品信息服务平台】的 GPC分类代码(中文版)。
GPC分类代码是国际物品编码组织( GS1) 依据GPC标准将特征相似的商品归为一类的代码。GS1全球商品分类标准(Global Product Classification, GPC)不断扩展更新,每年发布两个新版本。GPC分类代码按照大类(Segment)、中类(Family)、小类(Class)、细类(Brick)来划分,并细分为具体的商品核心属性类型和属性值。商品数据交换中,通常采用第4级代码,即细类代码。
转换的逻辑还是很清晰简单的,使用HTTP client获取数据 > 解析json格式的结果数据 > 入库。

-- 建表语句
CREATE TABLE "public"."data_global_product_classification_kettle" (
"id" int4 NOT NULL,
"pid" int2,
"code" varchar(64) COLLATE "pg_catalog"."default",
"description_en" varchar(255) COLLATE "pg_catalog"."default",
"description" varchar(255) COLLATE "pg_catalog"."default",
"hierarchy" int2,
CONSTRAINT "data_global_product_classification_copy1_pkey" PRIMARY KEY ("id")
);
COMMENT ON COLUMN "public"."data_global_product_classification_kettle"."id" IS '唯一ID';
COMMENT ON COLUMN "public"."data_global_product_classification_kettle"."pid" IS '父级ID';
COMMENT ON COLUMN "public"."data_global_product_classification_kettle"."code" IS 'code码';
COMMENT ON COLUMN "public"."data_global_product_classification_kettle"."description_en" IS '英文描述';
COMMENT ON COLUMN "public"."data_global_product_classification_kettle"."description" IS '描述';
COMMENT ON COLUMN "public"."data_global_product_classification_kettle"."hierarchy" IS '等级';
COMMENT ON TABLE "public"."data_global_product_classification_kettle" IS '全球商品分类数据表';
在 GPC分类代码(中文版)页面找到了请求数据的连接:http://b2b.gds.org.cn/coding/GetGPC。

我们想要的数据为json格式的list对象:

1️⃣ HTTP client 使用
大家一定要注意,url 要通过生成记录工具或从文件内读取,不要直接在HTTP client的URL输入,否则无法获取数据,具体原因未知,说多了都是泪 😢

HTTP client 的配置比较简单,要注意 URL 字段名要与配置的URL步骤字段名一致,结果字段名自定义即可。

2️⃣ JSON input
获取的数据为 JSON 格式,所以使用 JSON input 解析,很常用的工具,这里不再过多赘述。

由于 URL 数据无法预览,这里有个小技巧,我们可以将结果数据放到json文件内,让 JSON 输入自动获取字段数据,效率高,也不容易出错。

3️⃣ 数据入库
这个步骤还有啥可说的?

执行这个ktr数据已经入库:

这里只分享几个SQL不做详细说明。
1️⃣ 将一列变成多行
使用的是函数 regexp_split_to_table 这个函数的结果是无法进行 DISTINCT 操作的。
CREATE TABLE commodity_classification_dictionary_tmp AS
SELECT ID, regexp_split_to_table( VALUE, ',' ) AS "value"
FROM commodity_classification_dictionary ORDER BY 1, 2
2️⃣ 一张表更新另一张表
Greenplum 数据库的string_agg类似与 MySQL的 group_concat。
-- 更新数据准备
SELECT t.ID, string_agg(t.VALUE, ',' ) FROM (
SELECT DISTINCT id,value FROM commodity_classification_dictionary_tmp
) t GROUP BY t.id
-- 更新数据
UPDATE data_commodity_classification_dictionary_new AS t1
SET VALUE = t2.VALUE
FROM
( SELECT t.ID, string_agg(t.VALUE, ',' ) AS "value" FROM (
SELECT DISTINCT id,value FROM data_commodity_classification_dictionary_tmp
) t GROUP BY t.id ) t2
WHERE
t1.id = t2.id
【资源连接】
链接:https://pan.baidu.com/s/1pCu-_S883kGJXVM0GhbyNA
提取码:smms