Back to skills
extension
Category: Data & AnalyticsNo API key required

kashen-check-special-letter

根据 SELECT 语句或 DDL(单表/多表),为所有字符/文本类字段生成"特殊字符探查 SQL"。覆盖反斜杠(\\)、双引号(")、回车(\\r)、换行(\\n)、制表符(\\t) 五种字符,扫描全表找出含这些字符的字段及样例值。当用户需要排查 Doris/MySQL 字段值中隐藏的特殊字符(如肉眼不可见但复制存在的双引号、TAB、换行),或想批量生成字段级特殊字符检测语句时使用。

personAuthor: user_d80cdbd5hubcommunity

Check Special Letter

为数据表自动生成特殊字符探查 SQL,帮助用户发现字段值中肉眼难辨的脏字符 (双引号、TAB、回车、换行、反斜杠),这些字符常导致导出/传 API 时解析异常。

覆盖的特殊字符

| 标签 | 字符 | 说明 | |------|------|------| | BACKSLASH | \ | 反斜杠,需 ESCAPE '\\' 匹配 | | QUOTE | " | 双引号 | | CR | \r | 回车 | | LF | \n | 换行 | | TAB | \t | 制表符 |

输入方式(任一种)

  1. 直接发 SELECT 语句(聊天粘贴或 .sql 文件)
    SELECT `ID`, `NAME`, `SPECIFICATION_MODEL` FROM ODS_SMOM_ITEM;
    
  2. 直接发 DDL(CREATE TABLE,脚本自动识别文本类字段)
    CREATE TABLE ODS_SMOM_ITEM (
      `ID` decimalv3(20,4),
      `NAME` varchar(200),
      `SPECIFICATION_MODEL` varchar(4000)
    );
    
  3. 多表:一次可含多段 SELECT(分号分隔)或多个 CREATE TABLE,脚本逐表生成。

使用方式

调用核心脚本(实际功能独立在此脚本中):

# 方式A:SELECT 直接传参
python3 scripts/gen_check.py --select "SELECT \`NAME\`,\`SPECIFICATION_MODEL\` FROM ODS_SMOM_ITEM" --out check.sql

# 方式B:SELECT 从文件读
python3 scripts/gen_check.py --select-file my_select.sql --out check.sql

# 方式C:DDL 文件
python3 scripts/gen_check.py --ddl-file my_ddl.sql --out check.sql

# 不指定 --out 则打印到 stdout

输出说明

  • 每张表一段,字段级 UNION ALL
  • 返回三列:col(字段名)、hit(命中的字符类型,如 QUOTE,TAB,)、sample(命中行的原始值,便于核对)。
  • 只返回有命中的字段行,干净字段不出现,一眼看出哪些字段需加转义。
  • 字符串/文本类字段才纳入扫描(varchar/char/text/string 等);数值、日期、布尔、枚举类默认跳过。

与转义 SQL 的配合

探查发现某字段含上述字符后,按用户既有转义规范处理(以 SPECIFICATION_MODEL 为例):

REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(`SPECIFICATION_MODEL`, '\\', '\\\\'), '"', '\\"'), '\t', ' '), '\r', ' '), '\n', ' ') AS `SPECIFICATION_MODEL`

注意:反斜杠加倍、双引号前加 \ 是"保留并转义"语义(传 API 场景); 若需"清洗删除"而非转义,把对应 REPLACE 的目标值改为 '' 即可。

约束

  • 不擅自修改用户原始 SELECT/DDL 的字段语义。
  • 生成脚本只做"探查",不改写数据。
  • 超 30 行产物以 .sql 文件交付。