Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过php或命令行将mysql db中的HTML实体转换为UTF-8的有效方法_Php_Mysql_Command Line_Utf 8 - Fatal编程技术网

通过php或命令行将mysql db中的HTML实体转换为UTF-8的有效方法

通过php或命令行将mysql db中的HTML实体转换为UTF-8的有效方法,php,mysql,command-line,utf-8,Php,Mysql,Command Line,Utf 8,我正准备从一个旧的Latin-1数据库迁移到UTF-8。我已经转储了数据库并对副本进行了转换 因为我现在使用的是UTF-8,所以我认为现在是时候将数据库中的任何HTML实体转换成它们的重音替代品了,这样我就可以存储Stellan Skarsgård而不是Stellan Skarsgå;研发部 我想最好的方法是先做一个mysqldump,然后再进行搜索和替换,将所有实体转换为它们的角色。这将简化这个过程,因为我只需要处理一个转储文件,而不是编写一个脚本来告诉我要转换哪些表和列 有没有办法

我正准备从一个旧的Latin-1数据库迁移到UTF-8。我已经转储了数据库并对副本进行了转换

因为我现在使用的是UTF-8,所以我认为现在是时候将数据库中的任何HTML实体转换成它们的重音替代品了,这样我就可以存储Stellan Skarsgård而不是Stellan Skarsgå;研发部

我想最好的方法是先做一个mysqldump,然后再进行搜索和替换,将所有实体转换为它们的角色。这将简化这个过程,因为我只需要处理一个转储文件,而不是编写一个脚本来告诉我要转换哪些表和列


有没有办法通过命令行以这种方式转换mysqldump文件?我能想到的过程,只是唐;我不知道使用什么工具。

如果只是一次性操作,我认为速度并不是那么重要,因此从数据库获取数据、解码实体并更新行的脚本应该是最安全的操作。使用
information\u schema
可以在所有表中的所有列中循环执行此操作。感谢您的快速响应。有没有一个这样使用信息模式的例子?我以前从来没有这样做过。请尝试从“信息”模式中选择*。“列”中的TABLE\u schema='my\u database'和DATA\u TYPE='varchar'。如果您知道受影响表中受影响的列,并且不太多,那么您当然可以直接执行它们。我使用它来获取表,然后选择table_name.column_name来获取数据,循环使用它并进行转换。如果每个表的where子句都可以更改,那么我就无法理解如何执行UPDATE语法。这里可能遗漏了一些明显的东西。没错,如果你的主键每次都不一样,那就很难了。如果表有一个一致的结构,比如说,
id
每次都作为主键,那么应该很容易<代码>从$table中选择id,$column,
更新$table SET$column=$decodedValue,其中id=$id
。如果“
id
”每次都不同,或者根本不存在,那就很困难了。也许为MySQL寻找一个HTML实体解码器实现是一个好主意,您可能会手动触发一次大量查询。