00:00
啊,那接下来呢,咱们应该把这个数据写到Phoenix里边,对吧?啊,但是之前呢,我们就提到过。往菲ix写啊,它有一个JDBCS官方所提供的,那这个东西呢,我们来看一眼啊。啊,打开这么慢吗。打开慢的话,我们就在这来写嘞,啊,就直接拿着这个is。点I think对吧,啊,那那个呢叫JDBC。think.think对吧?好,那我们看一下参数啊,首先。呃,那它俩者之间的区别呢,就在于第三个参数。对吧,那这个一样的啊,连接参数都有啊,就是下面呢,多一个叫执行参数批量提交,那第一个参数呢,它要一个S语句。第二个呢,叫statement builder。啊,因为搜索语句里边肯定要写这个问号嘛,占位符嘛,对吧,然后呢,这个地方。
01:05
是给正位赋值,好你我们就看到这儿,因为官方文档啊,打开比较慢,我就不等那边的啊,我们就直接看这个一样。呃,那你说这边如果我们要用的话,应该怎么写呢,或者说能不能用呢,对吧,如果能用我应该怎么写呢。想一想。能不能用啊。如果不能用,那为啥?如果能用,那我们应该怎么写对吧。
02:04
想一想,思考一下啊。嗯。啊,没有人说话。这个地方其实很简单啊,它用不了。用不了这个GDBC,那为什么用不了呢?很简单,因为你这儿呢,要提供一个S语句。对吧,而我们这个HDS里边,比如说有十张为表对吧,有十张,那你这个思维语句怎么写啊,统一不了吧。对吧,大家都说写全部写问号呗,表明这些东西都写问号,对吧?那你写几个问号呢?你十张表,每张表的字段个数都不一样。
03:02
你写几个问号二是不是没法写啊这个东西对吧,所以JDBCS这个呢,在我们当前这个序当中用不了,它适合的是什么呢?JDBCS适合的是往单表里边写出数据啊,所以呢,没办法了,我们只能怎么样自定义。我们还留了一手,我们可以自定义think对吧?好,那这边呢,我们又多一个function啊。到这来在这,呃,再来一个叫dim think方式。函数对吧,它呢要继承那肯定是reach吧,这个方式,因为毕竟你要写出去对吧,你肯定得用reach啊好,那这里边呢,有一个输入,输入类型呢,咱们是杰森啊不对,就流的类型呗。J3OBJECT对吧?好,那这里面呢,我们有两个,一个open方法要写一下,还有一个呢,当然是invoke方法了。
04:00
每条数据要用一次对吧,这个呢,在里边还是初始化连接池还是一样的啊好,那这边private,嗯,德鲁伊。啊。先做一个。初始化。池,这个池子肯定要初始化一下,对吧,德鲁伊的。u.create诶,那这里边呢,我们可以获取连接,然后还是一样的,这里边写法对吧,获取连接拼接circle执行。啊,还是这东西吧,那在这边呢,我们可以写了你一个DC的方式,对吧,跟上面那个函数一样啊,那这边呢,我们来这啊获取连接。从这个连接池里边点。Get connection。还是获取连接对吧,啊呃,第二个拼接circle。拼接四个语句啊,那执行。
05:01
执行好以后。释放资源。JDVC永远都这样对吧,死的啊,那拼接circle,诶,这边呢,我们也要去干什么。写出去啊,你在这拼接也可以,当然啊,可以直接在这拼接,那我们在这拼接吧,好吧,拼接这个circle啊,那circle长什么样的呢?那是这样子,Up。对吧,因为往菲写update in合并了UPS into。DB点。天。对吧,DB.tn好,然后这边呢,应该是ad。Name。好,Y柳丝括号。对吧。ID呢是1001,因为我们都用的watch类型啊,呃,Name呢是张三。没有。对吧,我们的思维语句应该长这个样子。
06:03
好,那咱们呢,可以拼接一下啊,或者说呢,当然也可以写出去啊。好,返回值呢,当然是string类型,一个搜狗语句。对吧,那这里边要传什么参数啊,你想想看啊,首先呢,呃,ABS into DB这都不用传,Table name肯定要传的啊,Table name呢,在value里边点。Get strict啊,注意这个表明呢,是我们自己添加的,在这儿叫think table对吧?这是Phoenix表明啊,你不要写错了,你写的是什么就是什么啊好,这是第一个表明要有,然后ID namex字段,Y6斯是字符串啊,然后这值,那这个不就得塔吗?这不是data本身嘛,对吧,那就是value点。Get stream啊get介吧,因为还要加工对吧。Cats。
07:01
Object啊,把这个date看进来。对吧,咱们要的呢,就是这两个参数啊,然后我们就可以获取这个sol语句,Out加回车,创建这个搜语句。对吧,呃,那这个思维语句呢,咱们可以在这。写一下。啊好,那怎么来呢?首先把这个拿过来呗。诶,当然有一个双引号啊,把拿过来啊,有个空格加DB,来自于g more config.STEM。对吧,好,再拼接一个点啊,在表明叫think table,好,那咱们已经写到这了,再还有一个左半括号,对吧,加一个左半边括号。对吧,左半边括号好,那接下来呢,要写的是ID name sex1001这个东西,那这个东西呢,很明显是keep吧,这是value,那我们之前说过,你对于杰森object类型呢,你就当做。
08:09
谁来处理map来处理,那map里边我们可以单独获取,可以获单独获取VALUE6吧data点。He said,诶这个是columns,好好data.get好,就直接是values啊加V得到一个values,好,那咱们呢,要把这玩变成它,对吧,要把这个变成这个东西。好,那就变历,那大家想到了变历还是跟刚才一样,判断是不是最后一个对吧,如果不是最后一个加逗号可不可以,可以刚刚的写法,但现在呢,我们需要把这个集合。这样放它没有什么其他的内容,我们可以一个简便的思路,什么呢,这样做来看啊。呃,在这边加。String。点join,然后呢,Columns。
09:00
按照逗号分割啊。呃,那这个方法呢,大家可能不太熟悉。好,那我们给大家说一下这个东西呢,相当于在SC里边的make string那个方法。有印象吗?它的返回值是什么?就是你本来是一个集合,对吧,它是这样子的,哎,你呢是AB。C啊,比如说你是这个。字符串ABC对吧,哎,那经过这个之后呢,变成什么了。就是一个字符串A逗号B逗号C。啊,变成这个样子了。对吧?Maket string大家还有印象吧?而在Java当中,它有个工具类string.join就跟这个功能是一样的。在里边添加分隔符啊好,那再下来,呃,在拼接,那现在呢,我们相当于写到这个X,然后有一个括号VALUE6括号对吧?好,那这边呢。
10:11
右半边括号。然后Y64啊,一般来说呢,我们还是加一个这个空空格,那其实可以不加对吧,把这个加一下啊好再拼接,那这个可以这样玩,那后面是不是也可以这样玩,但是呢,它又不一样了,它怎么样,它有一个什么。它它它有个单引号啊,那这块看啊,我能不能把这个整体看作一个分隔符啊,本来你的这个分隔符是不是逗号,那在这边呢,我把单引号逗号单引号作为什么。分割符。啊,我把这个内容作为一个分割符对吧,那那这个东西作为分割符呢,缺一点东西,前面缺个单引号,后面怎样缺个单引号对吧,所以呢,这边你补一个单引号对吧?好。
11:00
那拼接谁呢?我们的values values string us.join然后呢,Values,然后呢,我们按什么按单引号。逗号单引号作为分隔符对吧?啊做这个分隔符,最后呢,在拼接右半边括号,注意还有一个右半边的单引号要补上对吧?所以你看啊,一头一尾有个单引号,然后中间呢,用这个当做一个整体作为分隔符,那这个就搞定了。是不是?对吧,这个就搞定了。好,那接下来执行啊,诶,那编译并执行啊。呃,编译connection.prepare statement,然后呢,把这个四个语句列进去。加V得到一个编译对吧?呃,那statement的点。执行啊,插入数据对吧,然后这边呢,我们做一个提交commit。策略提交,因为呃,Phoenix呢,它的连接在执行的内容的时候呢,它不是自动提交的,所以我们手动提交一下,那他可能想问了,那前面那个建表语句他也没有提交啊,对吧,因为这俩不一样啊,呃,前面建表语句呢,是属于DDL。
12:16
对吧,建表它会自动提交,而现在呢,我们是DML。它默认不提交啊,默认不提交,所以呢,我们提交一下,然后最后呢,释放资源对吧?呃,statement.close。然后呢,这个连接connection.close好呃,那这个方法呢,它本身就抛了异常了,对吧,所以呢,我可以在里边。这为啥不编译?错误在这儿啊?啊,我刚要说你就问了对吧,那因为你重写的这个方法本身就怎么样。抛了异常了啊,抛了异常了,那我们还是想那个问题啊呃,如果这边写入数据发生异常了,我们要不要。
13:02
挂掉。对吧,我们应不应该让他挂掉,对吧,你想这个问题啊,如果说这边发生异常了,它会有什么影响。思考一下对吧,你像做生长环境当中这种项目的时候呢。你就要考虑了,嗯,如果说我们自己写项目,那无所谓,我们自己啊,写平时的测试你抛不抛都可以对吧,这边那我们在想这个地方。对吧,我们应该怎么办?
14:00
我们应该怎么办呢?啊。诶,两个答案不用挂说少一条数据而已。呃,有的人说挂应该挂掉啊,可能会关联不上维度表的数据,对了啊,那你看啊,这边如果说有一条数据没有写出据,比如说啊,呃,买四个里边是十条。对吧,现在呢,写到Phoenix写了什么呢?写了九条。注意这个时候反了啊,之前我们说的那个问题,删除数据是这边是九条,这边十条,那没关系对吧,因为你生产环境当中,根据这边来造,你第十条数据压根造不到,那这个呢,也不会被访问到,你就多一条数据无所谓。但是现在呢,现在会产生什么情况,比如说我生成数据的时候,我生成了这个第十条。对吧,好,我呢维度数据来关联,维表关联不上,因为你Phoenix里面没有。
15:01
对吧,你未来关联为表,是不是就关联不上,它引发的是这个后果呀,对吧?好呃,当然呢,看你后续怎么处理,如果说啊,你后续访问Phoenix关联不上的时候,你诶你呢,访问一次MY。如果你在访问Phoenix找不到,你要去访问未来的,你的逻辑啊,是要访问MYSQL。啊,你实打实会去访问这个my circle,那我们可以不管对吧,直接就不管好,那如果说呢,你这边。从Phoenix读不到数据,你不读MYSQL。这就是你最后的底线了,那你少一条数据微表关联不上,那未来就出错了。对吧,那按照这个逻辑走,是不是应该让它挂掉。就应该让他挂掉对不对?能不能明白?
16:03
就应该让他挂掉吧?对吧,啊,那我们就让它挂掉吧,就让它挂掉,那我们就这样。是不是就这样写啊,那因为这个把异常抛出去了,他肯定会挂掉,你不在这里边处理,你要是呃想不想它挂掉怎么办?把这个try catch,然后呢,在里边打印,一句话说写入失败就sod啊,不抛异常了。对吧,啊,这又跟你后续的处理它有关系。对吧,跟你未来的处理它是有关系的,如果你从Phoenix找不到,你去找MY。那。你可以在这处理一下这个异常呢,给他。开始掉对吧,自己手动打印,一句话也好,如果你未来只是到Phoenix就结束了。不走买车口,那么你这应该让他挂掉,那应该让他挂掉,直接抛呗,对吧,那已经它默认就已经抛了,那我们就可以这样写了,就结束了。对吧,啊,这就搞定了,这是我们将数据写到。
17:01
Phoenix对吧,啊,那到这个位置呢,就写完了对吧。
我来说两句