【问题标题】:mysql: duplicate some rows in a table changing info in the duplicated onesmysql:重复表中的某些行,更改重复行中的信息
【发布时间】:2013-12-20 00:15:31
【问题描述】:

我一直在解决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”。

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

【问题讨论】:

  • 听起来很简单,你试过什么?
  • "INSERT INTO table 1 ('Activiy Id',Day,Hour,'Students Set',Subject,Teachers,'Activity Tags',Room,Comments)(SELECT 'Subject' FROM @987654326 @ WHERE 'Subject'='Subject1')" 但是我不知道如何继续......
  • 我一直在想,在将它导出到 mysql 之前,我也可以处理 csv 文件...

标签: php mysql sql shell csv


【解决方案1】:

只需选择数据不变的列(小时、教师等)和要替换的数据不变的字符串(subjectA)。请注意,“subjectA”用引号括起来。

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

【讨论】:

  • 对不起,总是说“未知列”,比如说column_name=subject,oldname=sub_old,newname=sub_new,我尝试了很多组合,我不清楚该放在哪里...
【解决方案2】:

由于我无法使其成为 mysql 方式,我以 shell-script 方式完成,我通过 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");

.....

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-28
    • 2022-01-18
    • 1970-01-01
    • 2018-09-11
    • 2021-04-18
    • 1970-01-01
    • 2020-06-13
    • 2016-01-29
    相关资源
    最近更新 更多