00:00
啊好,各位同学,那接下来呢,咱简单说一下这个呃就是have当中,这个中就是呃说白了就是原数据乱码的一个问题,对吧,因为这块显示的这个,比如说什么优惠券组合表这个来自于哪儿这个信息。这信应该是来自于哪啊,实际上是来自于我们建表语句当中的,是不是应该是这个字段呀,我往上翻,因该来自这个位置啊对吧?Comment这个指的是什么的comment呢?是表的comment对吧?是表的注释,那当然呢,我们每一个字段后边是不是也会有字段的注释啊,对吧?啊是这样的啊,那完了之后呢,有的同学比如说我我这CTRLC一下啊,完了比如说你DC对吧,是不是能够查看咱们这张表的一个这个信息啊,对吧?啊,那我给他拿过来好放在这,然后咱们执行一下,呃,然后呢,有的同学,呃,表没有,我这个表可能还没有建出来啊,咱们换一张ods层的表啊ods比如说来一个库房阴分啊。OK啊,那有的同学这块你即即便是使用这个DSC去查看这个表的信息的时候呢,这块它也是乱码的啊是这样的,也就是我们存在中文的这个地方,一个俩,一个是表的入释,一个是字段的入释啊是这样的啊完之后这个问题咱怎么去解决呢?首先出现这个乱码的问题肯定是由于什么导致的呢?肯定是原数据它的编码有问题导致的,对吧?因为刚才说了我的表注是我的,呃,这个字段的就是实实上他们都是位于这个原数据库当中的啊,是这样的啊,那所以说那我们解决这个问题的思路就是干啥呢?是不是就是去修改我们这个氦物的原数据库的字符集压,对吧?啊但是呢,呃,这个我们通常不会去改整个hi语言数据库的字符集啊,对不对,那为什么?因为hi的这个官方呢,是不太推荐我们直接去修改它的这个字符集的啊,它默认的字符集是什么呢?是拉丁一对吧,是拉丁一它是不支持中文的啊呃,完之后呢,他又不要求我们改整个库,那我们要改的话,通常是怎么去做呢?通常呢,我们就需要去在那个。
01:55
这个库里边找到存储这个表的注释和字段注释的这两个表啊,然后呢,去呃单独的修改一下这两个表当中特定的那个字段的字符集,而不要改整个库的字符集,好,那我们这儿改谁呢?呃,实际上呢,之前大家在做采集项目的时候呢,呃,采集项目的第二一个文档最后的位置就已经给大家列出来了,这个修改的步骤了,可能有的同学当时做了没做啊,不知道什么情况啊呃,那完之后呢?呃,现在呢,给大家简单说一下,这块咱们要做的话,到底应该怎么去做啊,首先我们需要做的工作就是第一点先得找到have的原数据库当中,就是保存注释的那两张表啊,对吧?诶,哪两张表呢,我们这儿已经说的很清楚了,我们先看一下这个字段注释。
02:40
字段注释呢,实际上是存在于have的原数据库当中的columns v2这张表当中的啊,是这样的,现在我们可以实际的去看一下啊呃,比如说在这儿呢,我打开咱们的这个那看。呃,然后呢,打开这个j Mo,呃,找到ma store,这是咱们的语言数据库对吧?呃,之后呢,找一下刚刚所说的那边,这时候就一个column VR啊对吧?诶你双击给它打开,大家来看这里边是不是有一个字段叫做common的呀,对吧?里边存放的实际上是我们每一个字段的注释,OK啊,那大家那块字符机要是没改的话,这块儿你肯定是乱码的对吧?呃,那完之后呢,这边呃,你要想改这个字段,你怎么改啊,你可以按照我们文档当中给大家列出来的这个语句去改啊,直接执行一下这个语句就完事儿了,看一看能不能看懂,应该差不多能看懂啊,Auto table columnwa是不是改这张表啊?然后呢,是修改字段,哪个字段的comment字段对不对?那将它的这个类型还是跟之前保持一致就行,主要是这个叉side咱们需要设为UTF8,诶这个要注意一下,OK,那当然呢,你这么改行或者说呢,你直接使用咱这个工具改也行,在这儿呢,你可以这样去做啊呃,找到这张表,然后右键,然后是不是打开这个设计表啊,对吧,设计表之后呢,你找到这个comment字段,找到它,找它之后下边是不是就能够单独的去修。
03:54
改这一个字段的字符集和排序规则来家对吧?哎,是这样的,这样也能改,这个也比较方便一点啊好了,这是呃这个字段的注释,那表的注释在哪改呢?表的注释我们需要在这个位置去改啊,需要在这个位置改啊好,那完之后呢,简单看一看这块咱们怎么去改啊呃,首先呢,我们需要去呃找到这个对应的表,表是哪个表呢?叫做table table,然后S就是表的参数,那实际上呢,我们这个have当中,表的注释是当做一张,当做一个表的参数去存储的啊,所以说我们需要去那个所谓的tables里边去找,那你就找一下呗,TBL,然后呢,Per,呃,对吧,那直接搜一下啊,T不用搜了,直接看着了,就这张表啊来点开,点开之后大家来看一下啊。
04:37
那我们这个注释是不是存在于这个字段当中啊,对不对,是这样的啊,那所以说我们这块要改的话,就改这一个字段就够了,那具体怎么改呢?还是按照我们刚才那两种方式去改,都可都可以,就是大家选择一个合适的方式就行啊,这个相对也比较简单啊好了,同学,那到目前为止呢,这两个字段怎么去修改,那就已经完事了啊,诶后边同学能听清不能听清楚吧?啊行行行,OK,那咱继续往下进行啊,但是你光改这两张表实际上是不行的,除了要改这两张表,我们还有一个地方得改一下,诶哪呢,就是我们需要去修改一下have set当中的一个JBCUURL啊,因为大家都知道我们have呢,它去连接这个MY数据库的时候,走的肯定是GDPC,对吧,那所以说我们需要在GDPC这个连接当中声明,我们需要使用UTF8这个字符才可以,要不然的话中文也不能正常的显示啊,OK,那所以这时候呢,我们需要去改一下这个have set当中的一个配这个配置参数,那进来咱们去找一下啊。
05:33
OK,那现在呢,我们CD一下CD的opd model进到have,进到这个com完之后呢,我们打开这个have set这个配置文件,在这里边呢,我们来到最开头,大家来看,这就是我们之前配的那个接的URL对吧?在这里边呢,我们需要加上的参数一共有这样的两个,一个是use uncode等于true,一个呢是呃,Characterco等于UTF8需要加上这两个参数啊,然后这里边有一个小细节大家需要注意一下啊,就哪呢?就是这个多个参数之间的分隔符,就是通常情况下在我们URL当中对吧?分格是哪种类型的URL啊?那OK,我这个每个字段之间的分割符是什么呀?
06:11
就是你给他传参数的话啊,每个字段之间的分隔符是什么呀?是暗的符吧,对不对?OK啊,前面这个是地址,地址后边要想接参数的话,那这边我是不是该首先先来一个问号作为风格对吧?那后边我要是有多个参数,那每个参数之间我应该是用and去分格的,对吧?但是啊,要注意一下,在XM2文件当中按符它是一个特殊的字符,我们要想用的话呢,需要进行转移,那所以在这边我们应该怎么办呢?哎,是不是应该用这个转义字符才可以啊,对吧,这个暗的amp分号,这代表的就是and的,诶这个要稍微的注意一下啊,OK,那这个呃,大家注意就OK了,OK啊也是咱们要改的话,就需要改这两个地方,那当然了,呃,因为你这儿改了配置文件了,那所以说需要怎么做呀。需要重启还骚to是不是才有可能会生效啊对吧?哎,但是呢,大家你就是之前如果是呃同学没改之前没改的话啊,如果之前你没改就是现现在呢,即便你把这个刚才的字符集给它改过来了,即便你把这个还托two里边的这个,呃即即便你把还有赛当中这个URL的这个参数也改了,那完了之后呢,你重启了哈,有to了对不对,但是你原来建的表对吧,它也不能正常的显示了啊这个是为什么?其实道理很简单,你想啊,就是原来你没改之前,那我们这儿使用的是拉丁一的字符集对吧?那你把中文对吧,你存到我这个原数据库里的时候,它会按照什么进行编码呢?是不按照拉丁一进行编码对吧?那完了之后呢,你现在虽然把这个表当中的字符集改成了UPF8了,但是表里边的内容它会变吗?
07:45
它不会变的对吧,他还是,呃,把这个中文经拉丁一编码之后的那个结果对不对,那完了之后呢,你现在改成幺对八了,那相当于我需要从里边把经拉丁一编码的中文用UTF8去解,对吧?那你得到这个值能出来吗?能正确的显示吗?也不能正常的显示啊,是这样的啊,也就是说你如果之前没改,你现在才改,那你原来建的表它那个中文也不能正常显示,将来建的就没问题了,是这样的啊,你要想让原来的正常显示,那就得怎么办呢?就得把原来的表得删除重建才可以,对吧?啊是这样的,那有同学可能会担心,那我删除重建我这个数据它会不会丢啊,会丢吗?
08:24
咱表里边是不是已经有有些表里边已经有数据了呀,对吧?那那我这个会不会丢啊,会吗?其实是不会的,为什么不会呢?因为咱这是什么表,我们都是外部表,对吧?你删表之后它只会删原数据,数据是不会动的,对吧?诶是这样的啊,那现在呢,我给大家简单的演示一下啊,比如说现在我需要把原来的某一张表给它删除重建,那咱们随便找一张表,比如说我们就以谁为例,呃,咱们就随便往上翻一个吧,我们以这个,呃,Ods log INC为例,咱们就以为例吧,随便来一张表就行,可能我定位到张表OS,诶直接就来到这个来来到这了啊OK,那就是我们之前的一张表,对吧?那比如说我现在呢,需要给他删除重建,咱这张表现在是有数据的吧。
09:07
现在有数据没问题对吧?好,那现在呢,我们给它删除重建去操作一下,那删重建呢,我这个是不是就是删除语句啊对吧?Drop table1if exist,然后之后呢,我是不是把他俩直接一执行就行了呀,对吧?好,那现在我给它删除重建,那就是理论上删除重建之后,我这个数据它是不会丢的,对吧?那完之后咱们现在呢,可以再尝试着去查询一下这张表的数据啊来,我现在双击一。还有各位同学,你看这个数据还有吗?没有了对吧?哎,不对呀,咱这个不是说是外部表呢,我这个删表之后,这个数据不是不应该丢吗?对不对,这是怎么回事呢。啊,其实这个很简单啊,咱们可以去看一看那个数据到底还有没有对吧?我们进到1029870这个界面,然后呢,进到这个位置,我们再来到追帽,然后再进到log,对吧?来topic,诶不是这个位置,咱们应该找哪warhouse吧,咱这个表表的路径是在warhouse家对吧?找错了啊找这边来进到OS,咱们再找到ods log IC,诶6月14号的分区里边的数据是不是在呀,对不对?诶那为什么查不出来呢?哎,这个其实因为什么?因为是这样的,咱这张表是一个什么表,是一个分区表,那当我们在删这个表的时候,它会一并把什么信息也删除的,分区信息也会给删除的,是这样的啊,但是你要知道我们这个分区信息是什么时候加到这张表里的呢?是在我们执行load语句或iner的语句,对吧,你往这个分区里插入数据的时候,这个分区信息是不是才会出现呀,对不对,那你光把表删了,然后直接把这个重建一下,分区信息是不能恢复的啊,是这样的啊,那所以说。
10:42
分区信息没有,那相当于我现在这张表就相当于一个分区都没有,没分区是不是就没数据啊,对吧,你比如你可以查一下,比如说partitions,那加上这张表,那咱这表叫做ods,是不是log INC啊对吧?OK,那你把这个呢,你给他执行一下,你看它一个分区都没有,所以没数据嘛,对吧,你要是想让他诶能把数据查出来,只需要执行一个什么就就行了,是不是修复原数据啊对吧,这个修复原数据其实主要就是修复谁的。
11:07
分区信息啊,是这样的啊,OK,那修复原数据那个语句怎么写来着?MSCK对吧?OK,后边呢,介绍一个repair,这个MSK是啥意思。就是ma嘛,对吧,MS就是对吧,数据库对吧?然后呢,CK就是的意思,MS就是repair repair加谁呢?加上一个table table加上ods log IC,那这时候呢,它底层就会根据什么呢?就根据你这张表所在的路径下边的诶这个数据对不对,去修复你这个呃,分区的这个原数据信息,对吧?你这里边有个DT等于零六杠S4,那我就会出现一个零六杠S的分区啊是这样的,好,那现在呢,咱们去把这个语句给它执行一下,好好执行一下之后,我们现在再去执行上面的这个查看分区的语句回车,诶你会发现分区是不是就已经恢复了呀,对吧,那这时候我们再查数据呢,诶它也就能够正常的查出来了啊是这样的,这个大家一定要注意一下啊,那也就是说,如果各位同学你需要去把原来的这些表都删除重建啊,那你一定要记得在重建之后执行一下这个修复这张表的原数据的这个操作。
12:13
当然呢,在咱们这表可能比较多ODS1大堆的表,对吧,你要想呃,删除重建,你是不是都得删除重建啊,对吧?那这个可能你需要去写一些重复的语句,这个怎么写大家现在应该已经知道了吧,对吧,大家善用咱这个工具对吧?诶你可以怎么做呢?可以先把这个什么呃,MICK这些这个一样的命令是不是可以先写在这啊对吧?然后呢,你直接往下拉,往下拉之后呢,是不是把那个表直接给他拿过来,那就完事了对吧,把表格拿过来就完事了吧,对吧,这个应该知道怎么讲了吧。应外会了吧,呃,我这个就不再演示了,就是大家呢,呃,这块操作起来应该是呃没啥问题了,OK啊,这就是呃,咱们这个原数据库当中,呃这个中文注释乱码的一个问题的解决方案啊,这个大家要是不知道怎么做的话呢,你就照着这个之前的采集项目的文档,最后一小节就是专门干这个事儿的啊,是这样的啊OK,这个我就不再多说了。
我来说两句