MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
Tiande
V2EX  ›  MySQL

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

  •  
  •   Tiande · Jul 22, 2015 · 3404 views
    This topic created in 4026 days ago, the information mentioned may be changed or developed.

    如题。

    1.

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

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


    求纠正姿势,靴靴 ;)

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

    4 replies    2015-07-22 23:26:33 +08:00
    mhycy
        1
    mhycy  
       Jul 22, 2015   ❤️ 1
    source sql-file-path.sql
    rainysia
        2
    rainysia  
       Jul 22, 2015   ❤️ 1
    以前写的. 要出错的你得加些去获取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
        3
    Tiande  
    OP
       Jul 22, 2015
    @rainysia
    非常感谢,我是希望能有跟踪调试的效果,不单是为了批量执行。


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

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

    ```
    $ cat *.sql | $mysqlCon > result.txt
    ```
    Tiande
        4
    Tiande  
    OP
       Jul 22, 2015
    @rainysia
    hh 又去查了下开头的几个参数

    『set -e』是个突破点,出错就停止运行了,谢谢!
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5771 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 02:14 · PVG 10:14 · LAX 19:14 · JFK 22:14
    ♥ Do have faith in what you're doing.