如何使用shell脚本访问mysql数据库?

iyr7buue  于 2023-03-17  发布在  Mysql
关注(0)|答案(6)|浏览(107)

有没有一种方法可以访问MySQL数据库使用shell脚本?想做一些选择和一些插入多个表?
这将是伟大的,如果你能给予一些样本代码,因为我是新的脚本。

q3qa4bjr

q3qa4bjr1#

此链接似乎包含您想要的信息。
http://www.cyberciti.biz/faq/using-mysql-in-shell-scripts/

mysql -u user -p dbnane
ut6juiuv

ut6juiuv2#

试试这个

#!/bin/bash
echo "show all tables"
mysql -uroot -p'password' dbname<<EOFMYSQL
show tables;
EOFMYSQL
echo "Count of all records"
mysql -uroot -p'password' dbname<<EOFMYSQL
select count(*) from tbname;
EOFMYSQL
m528fe3b

m528fe3b4#

实际上,我是用Perl实现的,我写了一个Perl脚本,可以访问MySQL数据库。
我所要做的就是在我的Perl脚本中包含以下代码:

# PERL MODULES USING
use DBI;
use DBD::mysql;

但是要确保这些模块安装正确。我不知道该怎么做,因为我的系统管理员帮我安装了。
您可以像这样访问数据库:

# MYSQL CONFIG VARIABLES
$platform = "mysql";
$host = "<your db server ip>";
$database = "<db name>";
$org_table = "<table name>";
$user = "<username>";
$pw = "<password>";

# DATA SOURCE NAME
$dsn = "dbi:$platform:$database:$host:$port";

# PERL DBI CONNECT
$connect = DBI->connect($dsn, $user, $pw);

现在假设您创建了一个查询字符串,然后要执行它:

#SELECT THE ORG SHORT NAMES
$select_org = "SELECT id, short_name FROM $org_table";
$org_handle = $connect->prepare($select_org);

$org_handle will have the resultset.
zi8p0yeb

zi8p0yeb5#

例如,选择database dbnametable tablename中的所有name字段,并将所有名称重定向到/tmp/all_name. txt。

#!/bin/sh

mysql -uuser_name -puser_pwd -h10.10.10.10 -A --default-character-set=utf8 \
     -e "select name from dbname.tablename;"  > /tmp/all_name.txt

注意,-uuser_name不是-u user_name-puser_pwd not -p user_pwd

bcs8qyzn

bcs8qyzn6#

我建议使用--parameters而不是-u-p,因为它们是显式的,另外,默认的--port3306--hostlocalhost,所以如果您使用不同的--port--host,您还需要指定这些值。我还建议在命令上设置timeout,以防止在服务器由于任何原因没有响应时挂起:

#!/bin/bash

mysql_user="your_username" # should be in a secret store
mysql_pass="your_password" # should be in a secret store
mysql_host="localhost"
mysql_port="3306"
mysql_query="SHOW DATABASES;" # for example

mysql_result=$(timeout 5 mysql \
    --host="${mysql_host}" \
    --user="${mysql_user}" \
    --password="${mysql_pass}" \
    --port="${mysql_port}" \
    -e "${mysql_query}")

for row in ${mysql_result[@]}; do
    echo $row
done

如果运行脚本的机器上没有安装MySQL,则需要安装MySQL客户端,具体过程因平台而异。例如:
Ubuntu:

sudo apt install -y default-mysql-client

窗口(通过Chocolatey):

choco install -y mysql-cli

MacOS:This SO link介绍了已经成功的安装方法

相关问题