Mysql 如何从文本文件中删除特殊字符

Mysql 如何从文本文件中删除特殊字符,mysql,linux,awk,sed,Mysql,Linux,Awk,Sed,我一直在尝试将文本文件导入mysql,但没有成功。运行此命令时出现以下错误 LOAD DATA LOCAL INFILE '/file' INTO TABLE test COLUMNS TERMINATED BY ':'; ERROR 1300 (HY000): Invalid utf8mb4 character string: '' 我在这里找到了一个共享的命令,它显示了带有坏字符的行 grep -axv '.*' filename 11241321:▒oy▒_moley@zmal.com

我一直在尝试将文本文件导入mysql,但没有成功。运行此命令时出现以下错误

LOAD DATA LOCAL INFILE '/file' INTO TABLE test COLUMNS TERMINATED BY ':';
ERROR 1300 (HY000): Invalid utf8mb4 character string: ''
我在这里找到了一个共享的命令,它显示了带有坏字符的行

grep -axv '.*' filename

11241321:▒oy▒_moley@zmal.com
11241771:▒om▒_shead@zmal.com
11241811:▒eva▒_gould@zmal.com

现在我可以知道坏字符在哪一行,然后我可以手动删除坏字符,但这是一个痛苦,因为这些文件可能是巨大的。我想知道是否有办法找到这些坏字符,然后使用linux命令行删除它们。我希望保持行的完整性,但只删除坏字符。

删除不在(11,12,40-176)中的字符

\11=选项卡

\12=新线路

\40-176=(至~此范围包括键盘中的所有字母和符号

cat test.txt | tr -cd '\11\12\40-\176' > temp && mv temp test.txt

注意:如果您的数据包含ascii表中没有的特殊字符,也可以删除这些字符

将数据加载到一列二进制类型的TESTERABLE中,然后使用另一个查询来删除错误的行并解析正确的行。您想做什么?删除奇怪的字符,或者删除包含奇怪字符的整行字符?你能提供一个好字符和坏字符的文本示例吗?以及文件格式吗?你能定义什么是“坏字符”吗?如果是,那么你可以使用sed来替换这些字符中的空字符串。