#clickhouse
Вопрос:
Я пытаюсь вставить данные из ввода csv.
Пример строки:
1627635473988516097,1627635479990773393,6002,3,0,1152,0,1627635479:0;,1,1,1,3,2,**46.216.7.214,128.140.255.27**,60561,500,0,0,0,0,0,0,191,0,0,375001000099,0,0,0000:0000:0000:0000:0000:0000:0000:0000,0,0000:0000:0000:0000:0000:0000:0000:0000,0,0,0,0,0,0,0,116,0,0,['encrypted'],0,0,0,1545614606,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,0,0,0,0,0
Это часть запроса на вставку:
insert into migration.gate_clickstream_indexed (datetime, login, publicSrc, publicSrcV6, publicSrcPort, dst, dstV6, dstPort, bytesOut, bytesIn, application)
select toDateTime(truncate(start_time/1E9)), toString(msisdn),a**ssumeNotNull(if (ip_src LIKE '%.%', IPv4StringToNum(ip_src), NULL)), assumeNotNull(if (ip_src LIKE '%:%', IPv6StringToNum(ip_src), NULL))**, port_src, assumeNotNull(if (ip_dst LIKE '%.%', IPv4StringToNum(ip_dst), NULL)), assumeNotNull(if (ip_dst LIKE '%:%', IPv6StringToNum(ip_dst), NULL)), port_dst, bytes_ul, bytes_dl, toString(application)
from input
Но, несмотря на предложение «если», ch вставляет в IPv4 в формате publicSrcV6:
375001000099 0.0.0.0 :: 0 46.216.7.214 **::ffff:46.216.7.214** 60561 2021-07-30 11:57:53 128.140.255.27 **::ffff:128.140.255.27** 500 1152 0 0 2021-07-30
Я не могу понять, почему?
Ответ №1:
Я обнаружил, что эта проблема возникает только в случае вставки IPv4. Я пробовал использовать в части «другое» вместо NULL этот IPv4StringToNum(‘0.0.0.0’). И Это работает.