mysql 命令行重定向_将MySQL输出内容写入(重定向到)文件

对于数据库管理者来说,有时需要根据查询结果生成一系列非常相似但数量较多的sql命令,然后执行。为此,就需要将查询结果进行格式化,并输出到外部文件中。

对于select的查询结果,有个MySQL提供了直接的方法将查询结果写入到外部文件,其基本形式为

select * INTO OUTFILE 'file_name' from tab_list

我们还可以将查询结果进行一定的修饰,这要用到各种MySQL的内置函数,例如字符串函数和算数函数。

但是,有时我们的查询结果是用“show”命令得到的(例如show grants for 'user'@'host')时就不能使用上面的方法将查询结果输出到外部文件了。不过,根据MySQL说明书的提示,通过API访问MySQL的客户端程序,对于show命令返回的结果和select命令返回的结果都按相同的方式处理,因此我想到了通过PHP脚本来将一批show命令的结果写入外部文件。下面以一个具体问题来介绍我的处理方法。

在复制MySQL数据库时,如果希望将源MySQL Server的用户定义复制到目的Server时,就要获得每个定义用户的sql命令,然后执行这些sql命令,将命令产生的结果输出。下面是我写的 PHP脚本batch_sql_output.php,可以用php.exe直接在命令行执行php.exe batch_sql_output.php > output,将输出重定向的数据库外的文档

$sqlhost="localhost";

// $database="mysql";

$sqluser="admin";

$sqlpass="adminpass";

$mysql_link = @mysql_connect($sqlhost,$sqluser,$sqlpass) or die("Could not connect data-server: " . mysql_error());

// mysql_select_db($database, $mysql_link) or die ('Can\'t use database "'.$database.'" : '.mysql_error());

$preSql = "SELECT concat(\"SHOW GRANTS FOR '\",User,\"'@'\",Host,\"'\") as statement FROM mysql.user ORDER BY User,Host";

//die( $preSql);

$preResult = mysql_query($preSql) or print($preSql."\npreSql failed: " . mysql_error()."\n");

while ($preResultLine = mysql_fetch_array($preResult, MYSQL_ASSOC)) {

$result = mysql_query($preResultLine['statement']) or print($preResultLine['statement']."\nQuery failed: " . mysql_error()."\n");

while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {

foreach ($line as $col_value) {

echo $col_value."\n";

}

}

}

mysql_close($mysql_link);

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在MySQL命令行,可以使用"SHOW CREATE TABLE"语句来导出表的结构。 语法如下: SHOW CREATE TABLE table_name; 其,table_name表示要导出结构的表名。 执行该命令后,将返回一个结果集,其包含一个名为"CREATE TABLE"的字段,该字段的值即为包含了表结构的SQL语句。 可以通过将结果写入文件来导出表结构。具体操作如下: 1. 执行SHOW CREATE TABLE命令,将结果写入文件。 示例命令如下: mysql> SHOW CREATE TABLE table_name \G > structure.sql; 其,table_name为要导出结构的表名,structure.sql为要写入文件名。 2. 打开structure.sql文件,就可以看到其包含了该表的CREATE TABLE语句,即表的结构。 通过以上步骤,就可以使用MySQL命令行工具导出表的结构。 ### 回答2: MySQL 命令行导出表结构的命令是 `mysqldump`。下面是一个示例命令: ```shell mysqldump -u 用户名 -p 数据库名 表名 --no-data > 导出文件名.sql ``` 其,参数的含义如下: - `-u`:指定数据库的用户名 - `-p`:提示输入密码 - `数据库名`:指定要导出表结构的数据库名 - `表名`:指定要导出的表名 - `--no-data`:表示只导出表结构,不导出表的数据 - `导出文件名.sql`:指定导出的文件名和路径,必须以 `.sql` 为后缀 使用该命令会将指定表的结构导出为一个 SQL 文件,可以使用其他数据库管理工具将这个 SQL 文件导入到另一个数据库,从而复制表结构。 需要注意的是,导出的文件只包含表的结构信息,不包含表的数据。如果需要导出表结构和数据,可以去掉 `--no-data` 参数。如果需要导出多个表的结构,可以在命令行指定多个表名。 在执行命令时,需要将 `用户名` 和 `数据库名` 替换为实际的值,同时在输入密码时需要注意密码的安全性。 ### 回答3: 在MySQL命令行,可以使用以下命令导出表的结构: 1. 首先,登录到MySQL命令行客户端。 2. 选择要导出表结构的数据库。可以使用以下命令切换到特定的数据库: `USE 数据库名称;` 3. 导出表结构。使用以下命令导出单个表的结构: `SHOW CREATE TABLE 表名;` 该命令会显示包含创建表的完整SQL语句的结果, 包括表名、列名、数据类型、索引、约束等信息。 4. 如果要导出多个表结构,可以使用将多个`SHOW CREATE TABLE`命令连接起来的方法: ``` SHOW CREATE TABLE 表名1; SHOW CREATE TABLE 表名2; SHOW CREATE TABLE 表名3; ``` 也可以通过使用通配符来导出多个表的结构,例如: `SHOW CREATE TABLE 表名前缀%;` 这将导出以指定前缀开头的所有表的结构。 5. 如果要将表结构导出到文件,可以使用以下命令将结果重定向到一个文件: ``` SHOW CREATE TABLE 表名1 > 导出文件路径; SHOW CREATE TABLE 表名2 >> 导出文件路径; SHOW CREATE TABLE 表名3 >> 导出文件路径; ``` `>`符号表示将结果覆盖写入文件, `>>`符号表示追加写入文件。 以上就是使用mysql命令行导出表结构的方法。导出的结构可以用于备份、迁移、或者与他人共享数据库结构信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值