s
https://www.cnblogs.com/silentmuh/p/9473557.html
MySQL提供的group_concat函数可以拼接某个字段值成字符串,如 select group_concat(user_name) from sys_user,默认的分隔符是 逗号,即"," ,如果需要自定义分隔符可以使用 SEPARATOR
如:select group_concat(user_name SEPARATOR ‘_‘) from sys_user
但是如果 user_name 拼接的字符串的长度字节超过1024 则会被截断。
通过命令 "show variables like ‘group_concat_max_len‘ " 来查看group_concat 默认的长度:
操作方法:
(1)在MySQL配置文件中加入:
group_concat_max_len = 102400
(2)更简单的操作方法,执行SQL语句:
SET GLOBAL group_concat_max_len = 102400;
SET SESSION group_concat_max_len = 102400;
注意:该方法缺点是重启服务后设置失效
案例一:
1、如果存在group_concat,最好在jdbc链接后增加长度参数
jdbc:mysql://127.0.0.1:3306/mylindows?sessionVariables=group_concat_max_len=102400
2、ES中想用JSON数组可以通过filter插件
filter {
json {
add_tag =>[]
source => "rel"
target => "relLabel"
remove_field=>["rel"]
}
}
示例:
input { jdbc { jdbc_driver_library => "/root/mysql-connector-java-5.1.22.jar" jdbc_driver_class => "com.mysql.jdbc.Driver" jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/mylindows?sessionVariables=group_concat_max_len=102400" jdbc_user => "root" jdbc_password => "123456" schedule => "* * * * *" #cron表达式,设置多久调度一次 jdbc_default_timezone => "Asia/Shanghai" jdbc_paging_enabled => "true" #开启分页查询 jdbc_page_size => "10000" #每页10000条数据 statement_filepath => "/opt/lindows.sql" #自定义查询sql lowercase_column_names => false #关闭自动小写转化,如果开启,诸如commId会被转化成commid use_column_value => false #如果开启则是用指定value作为最后查询的条件,默认使用当时时间 last_run_metadata_path => "/opt/lindows.txt" #记录最后一次查询的条件,默认是时间 } } filter { json { add_tag =>[] source => "rel" target => "relLabel" remove_field=>["rel"] } } output { elasticsearch { hosts => [ "192.168.1.2:9200","192.168.1.3:9200","192.168.1.4:9200" ] #集群地址 index => "lindows_index" #指定索引名称 document_id => "%{newsId}" #指定文档名称,需要和mysql.sql中的一个字段名相同 document_type => "news" #指定类型名 } }
end
db mysql / mysql cluster 5.7.19 / my.cnf / group_concat_max_len