记录平时code点滴,这次是通过一张充满异样字符的表,对数据表中的每一列进行清理,比double quotation的issue难多了!

本文介绍了一种使用T-SQL创建存储过程的方法,该过程能够遍历指定表的所有非标识列,并通过动态SQL更新这些列中的异常字符。此方案利用游标和递归思想实现了高效的数据清洗。

需要提供对象:

一张需要被替换字符的表。

通过游标结合动态SQL对某一张特定表的所有列进行更新,主要是对其列值的异常字符处理。

dbo.Characters_need_to_be_replaced 


create proc usp_Clean_Table 

@table_name sysname
as
begin 

set nocount on 


declare @col_name varchar(max)='',
@SQLCMD varchar(max)=''
declare replace_cur cursor local static forward_only for 
select name from sys.all_columns where is_identity=0 and object_id=object_id(@table_name)
open replace_cur
while(1=1)
begin 
fetch next from replace_cur into @col_name 

if @@fetch_status!=0 break


--if 1=0 continue
        declare @col varchar(30)=''
        set @col=@col_name--为了不被覆盖只好定义个变量临时存储每次的列名。
        select @col_name='replace('+@col_name+',char('+cast(ASCII(chr) as varchar)+'),'''')' from dbo.Characters_need_to_be_replaced --这个类似于递归调用
        print @col_name
        set @SQLCMD='update '+@table_name+' set '+@col+'='+@col_name
        print @SQLCMD
        --exec master..sp_executesql N@SQLCMD

end

close replace_cur 

deallocate replace_cur

end 


虽然显得有些粗糙,但是确实是个强大的功能,可以改写好多了。感悟就是要有迭代跟递归的思想。

在 Kibana 中查询 `quotation_product_index_v1` 索引的数据,可以通过 **Kibana 的 Discover 功能**来实现。以下是详细的操作步骤和可选的查询方法(包括使用查询语言)。 --- ### ✅ 方法一:使用 Kibana Discover 页面查看数据 1. **打开 Kibana** - 登录你的 Kibana 实例(通常是 `http://<your-kibana-host>:5601`) 2. **进入 Discover 页面** - 在左侧导航栏点击 **"Discover"** 3. **选择索引模式** - 如果你还没有为 `quotation_product_index_v1` 创建索引模式(Index Pattern),需要先创建: - 进入 **Stack Management > Index Patterns > Create index pattern** - 输入索引名称:`quotation_product_index_v1` - 选择时间字段(如果有,如 `@timestamp`;如果没有,可以选择“Skip”) - 创建完成后,在 Discover 页面顶部选择该索引模式 4. **浏览数据** - 此时你会看到最近的文档列 - 可以通过左侧字段列查看可用字段(如 `productName`, `price`, `quotationId` 等) 5. **搜索数据** - 在顶部搜索框中输入查询语句,支持以下几种语法: --- ### ✅ 方法二:使用 Kibana 查询语法(KQL - Kibana Query Language) KQL 是 Kibana 默认推荐的查询语言,简单易用。 #### 示例查询: ```kql productName: "iPhone" ``` > 查找 productName 字段等于 "iPhone" 的文档 ```kql price > 1000 and status: "active" ``` > 查找价格大于 1000 且状态为 active 的产品 ```kql quotationId : "Q202405001" ``` > 查找特定报价单中的产品 ```kql *手机* ``` > 模糊匹配包含“手机”的文档(全文检索) --- ### ✅ 方法三:使用 Lucene 查询语法(旧版) 如果你更习惯 Lucene 语法,可以在右上角切换查询语言为 **Lucene**。 #### 示例(Lucene 语法): ```lucene productName:"iPhone" AND price:>1000 ``` ```lucene quotationId:Q202405001 ``` > 注意:Lucene 不支持像 KQL 那样的现代语法高亮和自动补全,建议使用 KQL。 --- ### ✅ 方法四:使用 Dev Tools 查询原始 Elasticsearch 请求(高级) 如果你想直接看 JSON 数据或调试查询,可以使用 **Dev Tools > Console** 发送请求。 ```json GET /quotation_product_index_v1/_search { "query": { "match_all": {} }, "size": 10 } ``` 或者带条件查询: ```json GET /quotation_product_index_v1/_search { "query": { "term": { "quotationId.keyword": "Q202405001" } } } ``` > 注意:文本字段如果是 `text` 类型,可能需要使用 `.keyword` 子字段进行精确匹配。 --- ### 🔍 小贴士 - 如果字段没有显示在左侧,请检查是否被 `excluded` 或未被索引。 - 使用 **Time Range** 控制器时,确保你的时间字段正确设置(如果无时间字段,可选择 “No time filter”)。 - 可保存常用查询以便后续复用。 --- ### 总结 你可以在 Kibana 中通过以下方式查询 `quotation_product_index_v1`: | 方法 | 工具 | 适用场景 | |------|------|---------| | 图形化浏览 | Discover | 快速查看和筛选数据 | | 条件查询 | KQL/Lucene | 精确查找特定记录 | | 原始请求 | Dev Tools | 调试复杂查询或获取完整 JSON | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值