使用MySQL我可以运行查询:
SHOW CREATE TABLE MyTable;
Run Code Online (Sandbox Code Playgroud)
它将返回特定表的create table语句.如果您已经创建了一个表,并且想要在另一个数据库上创建相同的表,这将非常有用.
是否可以获取已存在的行或行集的insert语句?有些表有很多列,我很高兴能够获得一个insert语句将行传输到另一个数据库而不必写出insert语句,或者不将数据导出到CSV然后导入相同的数据进入其他数据库.
只是为了澄清,我想要的是如下工作:
SHOW INSERT Select * FROM MyTable WHERE ID = 10;
Run Code Online (Sandbox Code Playgroud)
并为我返回以下内容:
INSERT INTO MyTable(ID,Col1,Col2,Col3) VALUES (10,'hello world','some value','2010-10-20');
Run Code Online (Sandbox Code Playgroud)
Kai*_*aja 141
似乎没有办法INSERT从MySQL控制台获取语句,但你可以像Rob建议的那样使用mysqldump来获取它们.指定-t以省略表创建.
mysqldump -t -u MyUserName -pMyPassword MyDatabase MyTable --where="ID = 10"
Run Code Online (Sandbox Code Playgroud)
Zol*_*tán 64
在MySQL Workbench中,您可以将任何单表查询的结果导出为INSERT语句列表.只需运行查询,然后:
Export/Import结果上方附近的软盘Format选择SQL INSERT statementsSaveExportRob*_*use 12
由于您使用SHOW CREATE TABLE MyTable生成的SQL复制了表,因此您只需执行以下操作即可将数据加载到新表中.
INSERT INTO dest_db.dest_table SELECT * FROM source_db.source_table;
Run Code Online (Sandbox Code Playgroud)
如果你真的想要INSERT语句,那么我所知道的唯一方法就是使用mysqldump http://dev.mysql.com/doc/refman/5.1/en/mysqldump.htm.您可以选择仅转储特定表的数据,甚至限制行.
Mos*_*zli 11
在 PHPMyAdmin 中您可以:


如果您选择它们并单击表底部的“复制”,然后单击“预览 SQl”,则可以一次将其应用于多行
Chr*_*ams 10
我写了一个php函数来做到这一点.我需要创建一个insert语句,以防在删除历史记录表后需要替换记录:
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;
}
Run Code Online (Sandbox Code Playgroud)
Gab*_*tes 10
下面的命令将转储到终端,而不包含mysqldump将在INSERT周围输出的所有额外内容。这允许从终端复制而不写入文件。如果环境限制写入新文件,这非常有用。
mysqldump -u MyUserName -pMyPassword MyDatabase MyTable --where="ID = 10" --compact --no-create-info --complete-insert --quick
使用mysqldump --help我发现了以下选项。
-q, --quick不缓冲查询,直接转储到标准输出。(默认为打开;使用 --skip-quick 禁用。)
-t, --no-create-info不要写入表创建信息。
-c, --complete-insert使用完整的插入语句。
--compact提供更简洁的输出(对于调试很有用)。禁用结构注释和页眉/页脚构造。启用选项 --skip-add-drop-table --skip-add-locks --skip-comments --skip-disable-keys --skip-set-charset。
笔记本电脑电梯的代码工作正常,但有一些我认为人们可能喜欢的东西.
数据库处理程序是一个参数,而不是硬编码.使用了新的mysql api.将$ id替换为可选的$ where参数以获得灵活性.如果有人试图进行sql注入并避免涉及引号的简单破坏,请使用real_escape_string.使用INSERT table (field...) VALUES (value...)...语法使得字段只定义一次,然后只列出每行的值(implode非常棒).因为奈杰尔约翰逊指出,我加入了NULL处理.
我$array[$key]之所以使用,是因为我担心它可能会以某种方式改变,但除非出现严重错误,否则无论如何都不应该.
<?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).";";
}
?>
Run Code Online (Sandbox Code Playgroud)
在MySQL工作台中执行以下操作:
单击服务器>数据导出
在“对象选择”选项卡中,选择所需的架构。
接下来,使用模式右侧的列表框选择所需的表。
选择一个文件位置以导出脚本。
单击完成。
导航到新创建的文件并复制insert语句。
如果您想为您的表获取“插入语句”,您可以尝试以下代码。
SELECT
CONCAT(
GROUP_CONCAT(
CONCAT(
'INSERT INTO `your_table` (`field_1`, `field_2`, `...`, `field_n`) VALUES ("',
`field_1`,
'", "',
`field_2`,
'", "',
`...`,
'", "',
`field_n`,
'")'
) SEPARATOR ';\n'
), ';'
) as `QUERY`
FROM `your_table`;
Run Code Online (Sandbox Code Playgroud)
结果,您将有insers语句:
INSERT INTO your_table( field_1, field_2, ..., field_n) VALUES (value_11, value_12, ... , value_1n);
INSERT INTO your_table( field_1, field_2, ..., field_n) VALUES (value_21, value_22, ... , value_2n);
/................................................................ ..../
INSERT INTO your_table( field_1, field_2, ..., field_n) VALUES (value_m1, value_m2, ... , value_mn);
, 其中 m - your_table 中的记录数
小智 5
有一个非常简单且有用的解决方案,可以创建用于编辑的 INSERT 语句,而无需仅通过复制和粘贴(剪贴板)导出 SQL:
| 归档时间: |
|
| 查看次数: |
125419 次 |
| 最近记录: |