首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >MySQL中现有行的Get Insert语句

MySQL中现有行的Get Insert语句
EN

Stack Overflow用户
提问于 2010-10-20 21:28:07
回答 11查看 176.6K关注 0票数 171

使用MySQL,我可以运行查询:

代码语言:javascript
复制
SHOW CREATE TABLE MyTable;

它将返回指定表的create table语句。如果您已经创建了一个表,并且想要在另一个数据库上创建相同的表,这将非常有用。

是否可以为已经存在的行或行集获取insert语句?有些表有很多列,如果能够让insert语句将行转移到另一个数据库,而不必写出insert语句,或者不将数据导出到CSV,然后再将相同的数据导入另一个数据库,那就太好了。

只是为了澄清一下,我想要的是像这样工作的东西:

代码语言:javascript
复制
SHOW INSERT Select * FROM MyTable WHERE ID = 10;

并为我返回以下内容:

代码语言:javascript
复制
INSERT INTO MyTable(ID,Col1,Col2,Col3) VALUES (10,'hello world','some value','2010-10-20');
EN

回答 11

Stack Overflow用户

发布于 2012-07-12 00:26:39

我写了一个php函数来做这件事。我需要编写一条insert语句,以防在删除历史表后需要替换记录:

代码语言:javascript
复制
function makeRecoverySQL($table, $id)
{
    // get the record          
    $selectSQL = "SELECT * FROM `" . $table . "` WHERE `id` = " . $id . ';';

    $result = mysql_query($selectSQL, $YourDbHandle);
    $row = mysql_fetch_assoc($result); 

    $insertSQL = "INSERT INTO `" . $table . "` SET ";
    foreach ($row as $field => $value) {
        $insertSQL .= " `" . $field . "` = '" . $value . "', ";
    }
    $insertSQL = trim($insertSQL, ", ");

    return $insertSQL;
}
票数 10
EN

Stack Overflow用户

发布于 2012-11-10 01:51:22

Laptop Lift的代码运行良好,但我认为人们可能会喜欢一些东西。

数据库处理程序是参数,而不是硬编码的。使用了新的mysql api。为灵活起见,将$id替换为可选的$where参数。如果有人曾经尝试过sql注入,并避免涉及引号的简单中断,则使用real_escape_string。使用INSERT table (field...) VALUES (value...)...语法,这样字段只定义一次,然后只列出每一行的值(内爆非常棒)。因为Nigel Johnson指出了这一点,所以我添加了NULL处理。

我使用$array[$key]是因为我担心它会以某种方式改变,但除非有什么可怕的错误,否则它无论如何都不应该改变。

代码语言:javascript
复制
<?php
function show_inserts($mysqli,$table, $where=null) {
    $sql="SELECT * FROM `{$table}`".(is_null($where) ? "" : " WHERE ".$where).";";
    $result=$mysqli->query($sql);

    $fields=array();
    foreach ($result->fetch_fields() as $key=>$value) {
        $fields[$key]="`{$value->name}`";
    }

    $values=array();
    while ($row=$result->fetch_row()) {
        $temp=array();
        foreach ($row as $key=>$value) {
            $temp[$key]=($value===null ? 'NULL' : "'".$mysqli->real_escape_string($value)."'");
        }
        $values[]="(".implode(",",$temp).")";
    }
    $num=$result->num_rows;
    return "INSERT `{$table}` (".implode(",",$fields).") VALUES \n".implode(",\n",$values).";";
}
?>
票数 9
EN

Stack Overflow用户

发布于 2010-10-23 00:47:05

我使用程序SQLYOG,在这里我可以执行select查询,指向

结果,然后选择导出为sql。这给了我insert语句。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3978326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档