从终端运行数据库中的 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" < "filename.sql"
,你有什么想法吗?
@Tomislav 我同意你的回答,但是在命令行中一起写密码是个坏主意。如果你只留下-p而不写密码,那么系统会要求你输入密码。【参考方案3】:
试试这个:
mysql -u your_username -p your_password
use db_name
source <path_to_sql_file>/file.sql
【讨论】:
我在“source”命令之前选择了一个数据库:“use如果要为特定数据库运行 SQL 文件,请先选择该数据库:
mysql -u your_username -p your_password
use db_name
source <path_to_sql_file>/file.sql
【讨论】:
以上是关于从终端运行数据库中的 sql 文件的主要内容,如果未能解决你的问题,请参考以下文章