MySQL 执行大量语句时的正确姿势? mysql < *.sql ? 使用 GUI?

2015-07-22 14:49:53 +08:00
 Tiande

如题。

1.

mysql < *.sql 
# 这种方式不知道如何良好的 展示执行结果 以及 纠错

2.
在 MySQL 终端,上一行输出之后我就直接 <C-c> 的...
希望能像使用 SQL Server 那样交互。


求纠正姿势,靴靴 ;)

PS:主要在 Mac大便系Linux 用。

2713 次点击
所在节点    MySQL
4 条回复
mhycy
2015-07-22 14:55:35 +08:00
source sql-file-path.sql
rainysia
2015-07-22 22:14:01 +08:00
以前写的. 要出错的你得加些去获取source的process
#!/bin/bash

`
set -e
LC_ALL=C
LANG=C
unset TZ
TZBase=$(LC_ALL=C TZ=UTC0 date -R)
UTdate=$(LC_ALL=C TZ=UTC0 date -d "$TZBase")
TZdate=$(unset TZ ; LANG=C date -d "$TZBase")

file_path="/home/www/db/bigdb/test/" #要导入的sql文件夹
host="192.168.85.123" #要导入的mysql主机
username="db4mysql" #mysql的用户名
password="db4pwd" #mysql的密码
dbname="sample" #mysql的数据库名
now=$(date "+%s") #计时

mysql_source(){
for file_name in `ls -A $1`
do
seg_start_time=$(date "+%s")
if [ -f "$1$file_name" ];then
command="source $1$file_name"
mysql -h${host} -u${username} -p${password} ${dbname} -e "$command"
echo "source:" \"$1$file_name\" "is ok, It takes " `expr $(date "+%s") - ${seg_start_time}` " seconds"
fi
done

echo "All sql is done! Total cost: " `expr $(date "+%s") - ${now}` " seconds"
}
echo "Universal Time is now: $UTdate."
echo "Local time is now: $TZdate."
mysql_source $file_path
`
Tiande
2015-07-22 23:23:48 +08:00
@rainysia
非常感谢,我是希望能有跟踪调试的效果,不单是为了批量执行。


就您的例子,我觉得直接用管道如何?

『mysql -h${host} -u${username} -p${password} ${dbname}』
完全可以写到 shell 参数里(既然是明文的话...):
```
$ mysqlCon='mysql -h ...'
```

```
$ cat *.sql | $mysqlCon > result.txt
```
Tiande
2015-07-22 23:26:33 +08:00
@rainysia
hh 又去查了下开头的几个参数

『set -e』是个突破点,出错就停止运行了,谢谢!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/207514

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX