0

我需要在大学服务器上使用数据库表来获取项目的测试数据。我对数据库和 MySQL 很陌生。我的教授已将服务器的用户名和密码发送给我。以及 MySQL 服务器的额外用户名和密码。我花了一段时间,但最后我能够通过 ssh 连接到服务器,然后设法导航到 $cd / $cd usr/bin/MySQL 然后登录并在其中一个表中找到数据/句子数据库。

现在有一个问题:如何获取计算机上的数据?我想到了一个python脚本。但是我不能编写一个脚本,什么在不同的服务器上登录,然后导航到 MySQL 文件夹登录那里,以某种方式将表中的句子复制到我可以使用的 txt 文件中?

4

2 回答 2

3

您可以使用mysqldump程序(如果它在您的机器上可用)来获取您需要的表的转储。

如果您想将转储作为 SQL,以便可以将其插入到您自己的数据库中,您可以使用

mysqldump -u "USERNAME" -p "PASSWORD" -h "HOSTNAME" "DATABASE" "TABLE" > dump.sql

强烈建议省略密码,这样您的密码就不会保存在 shell 历史记录中。在执行过程中会提示您输入它。

你会得到一个包含所有 SQL 查询的文件来重新创建这个表。您也可以将该表中的数据导出为 CSV 或 XML,具体取决于调用时使用的参数。

如果数据库服务器只能从您提到的第二台服务器访问,但您可以通过 ssh 访问此服务器,那么您可以尝试调用

ssh USER@HOST 'mysqldump --version'

希望它会为您提供与此类似的输出:

mysqldump  Ver xx.yy Distrib x.y.z, for debian-linux-gnu (x86_64)

如果是这样,您会知道已安装此程序,您可以使用以下行

ssh USER@HOST 'mysqldump -u "USERNAME" -p "PASSWORD" -h "HOSTNAME" "DATABASE" "TABLE"' | cat > dump.sql

这应该会在您的本地计算机上向您显示转储。

于 2018-11-30T14:40:58.737 回答
2

您可能不需要 ssh 进入远程服务器;根据他们的服务器和数据库的设置方式,您可以将本地计算机上的 mysql 客户端连接到数据库服务器。虽然限制允许连接的位置具有安全优势但访问数据库localhost实际上只是一种特殊情况。

你甚至可能不需要 python 脚本。您可以直接从 mysql 导出到文本文件,或者您的客户端可能具有将数据直接从远程服务器复制到本地数据库的功能。

我猜想这样的事情对你有用,尽管将输出转换成你想要的格式可能会很棘手:
mysql -h "host address" -u "username" -p -e "SELECT * FROM `table`" > localFile.txt

如果您想使用在服务器上运行的 python 脚本来执行此操作,那么您将需要使用 ssh 凭据通过 SSH 进行 FTP 来来回获取文件。您的 FTP 客户端肯定会支持这一点。

于 2018-11-30T14:01:10.470 回答