繁体   English   中英

从数据库中查找或剥离无效字符

[英]Find or Strip Invalid characters from Database

我们正在使用一个数据库,前端软件允许输入无效字符。 (我无法控制或重写该软件。)

字符的类型是回车符,换行符,...,基本上不是0-9,az或标准标点的任何字符都会导致数据库问题以及如何使用数据。

我正在寻找一种扫描整个数据库以识别这些无效代码并将其显示为结果或将其剥离的方法?

我一直在浏览此网站,想知道是否存在一种搜索特定范围的方法? 但我可能正在吠错树。

我对SQL还是很陌生,所以请对我保持温柔,谢谢。

我唯一想到的方法是编写一个存储过程,该过程使用系统表来获取有关数据库/架构中所有字段的列表。 让它排除系统表(或仅包括用户定义的表),然后根据系统表查询中找到的列/表动态写出SQL更新语句。 本文所述,使用正则表达式或字符删除

有问题的系统表是:

SELECT
 table_name,column_name
FROM
 information_schema.columns

伪代码为:

Get list of tables we want to do this for
For each table in list
get list of columns for table that have string data.
For each column in table
generate update statement to strip unwanted characters
--Consider writing out table, column key, before after values to history table. incase this 
has to be undone.
--Consider counter so I have an idea of what was updated
execute updatestatement
next column
next table
write out counter

既然你说

然后,数据将移至无法处理这些字符的第二个程序,这将导致处理失败。

我想知道您是否可以将无法读取的数据留在原处,并为更改后的数据创建一个新列,仅当第二个进程失败时才填充该数据。 您仍然必须测试发生故障的单元格中数据的每个字符,但不必测试每一行的每个字符。 确定要处理的更新文本后,可以使用更新后的值再次调用第二个处理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM