mysql:复制表中的某些行,更改重复的信息

时间:2013-12-03 19:12:11

标签: php mysql sql shell csv

我一直在this post工作,但是我无法找到合适的解决方案,因为我接下来要做的事情是: 我有这个等价物:

subject1 = subjectA
subject2 = subjectB
subject3 = subjectC

然后我有一个包含下一个数据的csv文件:

hour,subject,teacher,room
10-11,subject1,teacher1,room1
11-12,subject2,teacher2,room1
09-11,subject3,teacher3,room2
10-11,subject4,teacher2,room3

然后我将这个csv导出到mysql,所以我需要做的是

duplicate row where subject like "subject1" and replace "subject1" by "subjectA";

和subject2,subject3相同,当我说替换时,我的意思是文本字符串“subject1”由文本字符串“subjectA”。

我希望我能说清楚,非常感谢。

2 个答案:

答案 0 :(得分:1)

只需选择数据不会更改的列(小时,教师等)以及要更改数据的位置(subjectA)。请注意,“subjectA”被引号括起来。

INSERT INTO 
    `your_table` 
    (`hour`, `subject`, `teacher`, `room`) 
        SELECT 
            `hour`, 'subjectA', `teacher`, `room` 
        FROM 
            `your_table` 
        WHERE 
            `subject` = 'subject1'

答案 1 :(得分:0)

由于我无法设法以shell脚本方式实现它的mysql方式,我通过Web界面上传csv文件,其中有一个脚本在场景后面将它发送到mysql,所以我做了一个修改csv文件然后发送到mysql-server的预处理程序,所以这是我在文件开头添加的行:

<?php
$file=$_POST['file'];

system("sed -i -r 's/^(.*)(Original Subject)(.*)$/\\1\\2\\3\\n\\1New Subject\\3/g' $file");

.....

所以我用2行替换原来的行,原来的行加上新的行......