逐行处理MySQL中的文本块字段

逐行处理MySQL中的文本块字段,mysql,Mysql,我在一个表中有一个MEDIUMTEXT blob,其中包含路径,由新行字符分隔。如果没有,我想在每行的请求中加上“/”。有没有一种方法可以通过内置过程编写查询来实现这一点 我认为另一种方法是编写Python脚本来获取字段、转换为列表、处理每一行并更新记录。数据库中没有那么多记录,因此我可以接受处理延迟(如果它没有锁定整个数据库或表)。大约8K+行 两种方式都可以。如果建议使用第二个选项,那么在开始之前我是否需要知道具体的锁定示意图——因为这将在live prod DB上运行(当然,我会拍摄DB快

我在一个表中有一个MEDIUMTEXT blob,其中包含路径,由新行字符分隔。如果没有,我想在每行的请求中加上“/”。有没有一种方法可以通过内置过程编写查询来实现这一点

我认为另一种方法是编写Python脚本来获取字段、转换为列表、处理每一行并更新记录。数据库中没有那么多记录,因此我可以接受处理延迟(如果它没有锁定整个数据库或表)。大约8K+行

两种方式都可以。如果建议使用第二个选项,那么在开始之前我是否需要知道具体的锁定示意图——因为这将在live prod DB上运行(当然,我会拍摄DB快照)。但就地更新最好不要停机。

演示:

mysql> create table mytable (id int primary key, t text );

mysql> insert into mytable values (1, 'path1\npath2\npath3');

mysql> select * from mytable;
+----+-------------------+
| id | t                 |
+----+-------------------+
|  1 | path1
path2
path3 |
+----+-------------------+
1 row in set (0.00 sec)

mysql> update mytable set t = concat('/', replace(t, '\n', '\n/'));

mysql> select * from mytable;
+----+----------------------+
| id | t                    |
+----+----------------------+
|  1 | /path1
/path2
/path3 |
+----+----------------------+

但是,我强烈建议将每个路径存储在自己的行中,这样您就不必考虑这一点。在SQL中,每列每行应存储一个值,而不是一组值。

感谢您提供的简单解决方案!我们将每个路径存储为单个对象,并将它们捆绑在一起进行简单的文件复制。我试图将我根本无法成为DB专家的所有事情正常化。