从终端运行数据库中的 SQL 文件

45

我有一个服务器,在服务器上的/var/www/目录下有一个sql脚本。该脚本用于创建表格和数据库。我需要知道如何在保留文件在服务器上的情况下,通过终端或一些客户端执行此sql脚本。

附:我对此主题的术语不是很了解,所以我会寻找其他建议来解决问题。

4个回答

49

我猜测它是MYSQL。要在Unix/Linux环境下运行它,您必须执行以下操作:

$ mysql -h "server-name" -u "your_username" -p "your_password" "database-name" < "filename.sql"

还有一种方式:

mysql --host=localhost --user=your_username --password=your_password  -e "filename.sql"

1
如果我的 SQL 脚本需要创建一个数据库,那么我该如何在命令行中使用一个数据库名称来执行这个操作呢? - Brennan Casey
尝试这个命令:mysql -uyour_username -pyour_password < filename.sql - Tomislav
4
第二种方法对我无效,-e参数需要一个有效的SQL语句而不是路径。例如:mysql --host=127.0.0.1 --port=3306 --user=root --password=your_password -e "select 1;" - charlax
我的MySQL不会响应 $ mysql -h "server-name" -u "your_username" -p "your_password" "database-name" < "filename.sql",你有任何想法吗? - XPMai
@Tomislav 我同意你的答案,但在命令行中一起写密码是个坏主意。如果只留下 -p 而不写密码,那么系统会要求你输入密码。 - Yash
@XPMai,你能否把你的错误信息写下来,这样我才能帮助你呢?通常情况下,如果你运行这个查询语句是不会有任何输出的。但是如果你使用的是更新版本,请检查我的答案。 - Yash

40

试一试:

mysql -u your_username -p your_password

use db_name

source <path_to_sql_file>/file.sql

在执行“source”命令之前,我选择了一个数据库:“use <databe_name>”。然后执行“source <path_to_sql_file>/file.sql”。 - Kuvalya

7
如果您想运行特定数据库的SQL文件,那么请先选择该数据库:
mysql -u your_username -p your_password

use db_name

source <path_to_sql_file>/file.sql

1

@Tomislav的答案是正确的,但我不喜欢使用命令行选项来写密码。

  1. 如果您没有创建新数据库并想要使用.SQL文件创建它,请使用以下语句:

    mysql -h {YOUR_HOST} -u {USERNAME} -p < {FILENAME.sql}

然后MySQL CLI会询问密码(防止密码泄露的最佳方法)。输入您的密码并按Enter键。

  1. 如果您已经创建了数据库,则使用以下命令:

    mysql -h {YOUR_HOST} -u {USERNAME} -p {DATABASE_NAME} < {FILENAME.sql}

然后MySQL CLI会询问密码。输入您的密码并按Enter键。

通常,.SQL文件不包含任何打印语句。因此,您需要使用MySQL CLI进行输入和检查。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接