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

Posted

技术标签:

【中文标题】从终端运行数据库中的 sql 文件【英文标题】:Run sql file in database from terminal 【发布时间】:2015-10-27 12:50:33 【问题描述】:

我有一个服务器,在该服务器的 /var/www/ 目录中有一个 sql 脚本。该脚本用于创建表和数据库。我需要知道如何从终端或某些客户端执行此 sql 脚本,同时将文件保存在服务器上。

PS- 我不太了解这个主题的术语,所以我会研究其他关于我的方法的建议。

【问题讨论】:

【参考方案1】:

@Tomislav 上面的回答是正确的,但我不喜欢用命令行选项写密码。

    如果您没有创建新数据库并希望使用 .SQL 文件创建它,请使用以下语句。

    mysql -h YOUR_HOST -u USERNAME -p

然后 MySQL CLI 将要求输入密码(防止任何人输入密码的最佳方法)。输入您的密码并按 Enter 键

    如果您已经创建了数据库,请使用以下命令。

    mysql -h YOUR_HOST -u USERNAME -p DATABASE_NAME

然后 MySQL CLI 将要求输入密码。输入您的密码并按 Enter 键

通常,.SQL 文件没有任何打印语句。所以你必须输入并检查你的 MySQL CLI。

【讨论】:

【参考方案2】:

我猜是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"

【讨论】:

如果我的sql脚本需要创建数据库怎么办?那么,我将如何为该命令行使用数据库名称? 试试这个:mysql -uyour_username -pyour_password 第二种方法对我不起作用,-e 的参数是有效的 SQL 语句,而不是路径。例如:mysql --host=127.0.0.1 --port=3306 --user=root --password=your_password -e "select 1;" 我的MySQL没有回复$ mysql -h "server-name" -u "your_username" -p "your_password" "database-name" &lt; "filename.sql",你有什么想法吗? @Tomislav 我同意你的回答,但是在命令行中一起写密码是个坏主意。如果你只留下-p而不写密码,那么系统会要求你输入密码。【参考方案3】:

试试这个:

mysql -u your_username -p your_password

use db_name

source <path_to_sql_file>/file.sql

【讨论】:

我在“source”命令之前选择了一个数据库:“use ”。然后“源 /file.sql”【参考方案4】:

如果要为特定数据库运行 SQL 文件,请先选择该数据库:

mysql -u your_username -p your_password

use db_name

source <path_to_sql_file>/file.sql

【讨论】:

以上是关于从终端运行数据库中的 sql 文件的主要内容,如果未能解决你的问题,请参考以下文章

从 R 运行 .sql 文件

MySQL 工作台中的交互式命令行

如何从 C# 动态运行 SQL Server CE [Windows mobile] 中的 SQL 脚本文件?

C ++只用一个命令逐行读取终端的文件流

从控制台/终端的文件导入数据库

如何从 Visual Studio Code 中的集成终端打开文件?