我获得了MySQL数据库的转储,并希望在MySQL模式下将其加载到H2中。到目前为止,除了"用户" table,其中包含密码并出现此错误:
'Hexadecimal string contains non-hex character: "UQ�m������l�a_x";
SQL statement:INSERT INTO `users` VALUES (2,16,'him','UQ�m������l�a_x', ...);
由于它们在这种情况下没用,我可以用任何其他文本值替换这些十六进制字符串。例如,我可以使用sed吗?
我试过这个:sed -e "s/'[\d128-\d255]'//g
但它取代了我文件的95%。
我已经看到了准备JDBC语句的答案,但我没有动手(这些是自动应用的" evolutions" Play框架)。
答案 0 :(得分:2)
要删除非ascii文本,您可以使用tr
或sed
,以下是使用tr
的一个基本示例:
echo -e "\xA9 "This is acsii text" \xA7 \xA3 \xA1 \xA2"
© This is acsii text § £ ¡ ¢
未删除ascii字符:使用tr -c -d '[[:alnum:]]|[[:space:]]|[:punct:]]'
echo -e "\xA9 "This is acsii text" \xA7 \xA3 \xA1 \xA2" |tr -c -d '[[:alnum:]]|[[:space:]]|[[:punct:]]'
This is acsii text
OR
echo -e "\xA9 "This is acsii text" \xA7 \xA3 \xA1 \xA2" |tr -cd '\000-\177'
This is acsii text
答案 1 :(得分:0)
使用另一个答案,我设法让它在sed中工作(增加替换的可能性),如下所示:
sed -E -e "s/[^[:alnum:][:space:][:punct:]]//g"