如何查看从mysql命令行工具远程执行的查询的输出?

时间:2013-11-29 07:19:09

标签: mysql sql-server command-prompt

我正在使用mysql命令行工具使用以下命令连接到远程计算机上的mysql服务器:

mysql -u username -ppassword -h host_ip -P port_no --verbose < sql file on windows

我在Windows上有一个.sql文件,我在远程服务器上执行。我使用了verbose来显示文件中存在的sql命令和正在执行的命令。

现在问题是当我执行上面的命令时,如果执行成功,它只返回提示返回,当出现错误时显示错误。我想要的是,当一个命令成功时,它应该显示服务器给出的响应,就像你在mysql中执行以下命令一样:
create table xyz;执行上述命令后, mysql返回&#34;表xyz成功创建&#34; 。我希望在我的命令行提示符下显示这样的内容。
我也使用了-E选项,但它不起作用。

被修改

要执行上述mysql命令,我已经下载了&#34; Windows(x86,xx-bit),ZIP Archive&#34;然后将命令提示符中的当前目录更改为上面下载文件中的bin文件夹。

1 个答案:

答案 0 :(得分:0)

执行每个select语句都会返回成功或失败。在DDL / DML语句的情况下,它返回受影响的行数。您应该在执行每个语句后捕获这些值以详细显示结果。

关于CREATE TABLE语句结果捕获的示例
在SQL脚本文件中,在每个可执行语句旁边添加类似于以下内容的语句。

select concat('table x ', if(row_count()=0, '', 'not '), 'created' ) 'result';

工作示例
我们假设您已在mysql_stmt.sql上的脚本文件Desktop中编写了以下语句。

select row_count();
create table y( x in6 );
select concat('table y ', if(row_count()=0, '', 'not '), 'created' ) 'result';
create table y( x int );
select concat('table y ', if(row_count()=0, '', 'not '), 'created' ) 'result';

-- C:\Users\Ravinder\Desktop\mysql_stmt.sql

在MySQL命令提示符下,发出以下命令:

\. C:\Users\Ravinder\Desktop\mysql_stmt.sql

您将在屏幕上看到详细的结果。

来自Shell提示的示例
在Shell提示符下也会出现相同的行为。但是,如果您在语法上有任何错误的查询或违反语句等,则执行会中止。在这种情况下,您可能需要在识别和修复问题时进行更多练习。您也可以选择抑制此类失败并指示继续进行下一个声明,但我不确定并且未尝试过。

MyShell>mysql -u root -p --verbose test < "C:\Users\Ravinder\Desktop\mysql_stmt.sql"
Enter password: *****
--------------
select row_count()
--------------

row_count()
-1
--------------
create table y( x int )
--------------

--------------
select concat('table y ', if(row_count()=0, '', 'not '), 'created' ) 'result'
--------------

result
table y created

MyShell>