首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将linux命令的输出导入MySQL表

问将linux命令的输出导入MySQL表
EN

Stack Overflow用户
提问于 2018-09-16 06:09:12
回答 1查看 209关注 0票数 0

我正在尝试创建google实例的清单,并将其保存在一个单独的MySQL数据库中,这样我就可以将其输入到现有的前提库存中。

要获得gcloud实例的列表,我可以运行以下命令:

代码语言:javascript
复制
$> gcloud sql instances list

它将返回如下内容:

代码语言:javascript
复制
NAME    DATABASE_VERSION  LOCATION        TIER         ADDRESS         STATUS
inst3   MYSQL_5_7         europe-west4-b  db-f1-micro  xx.xx.xx.xx     RUNNABLE
inst2   MYSQL_5_6         europe-west4-b  db-f1-micro  xx.xx.xx.xx     RUNNABLE
zandra  MYSQL_5_7         europe-west4-c  db-f1-micro  xx.xx.xx.xx     RUNNABLE

在bash脚本中,如果我像这样运行:

代码语言:javascript
复制
$> allinstances=`gcloud sql instances list`

要设置一个名为allinstances的变量,我如何将其插入到名为gcloudinv的mysql表中?

我曾尝试过这样做,希望这是一个错误:

代码语言:javascript
复制
$> mysql -uuser -ppassword gcloudinv < allinstances

我知道这是行不通的,但我需要在中间做些什么,才能将输出转换成mysql可以使用的格式。

理想情况下,我将覆盖这个基本库存每天。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-16 06:37:11

代码语言:javascript
复制
# just craete table if does not exists query
query="CREATE TABLE IF NOT EXISTS 'gcloud' ( NAME varchar(255), DATABASE_VERSION  varchar(255), LOCATION varchar(255), TIER varchar(255), ADDRESS varchar(255), STATUS varchar(255) ); "
# convert the lines in format `string[spaces]string[spaces] and so on` into a `insert into 'gcloud' ( string , string, and so on );`
query+="$(  gcloud sql instances list | tail -n +2 | while read -r name database_location location tier address status; do echo "insert into 'gcloud' ( '$name', '$database_location', '$location', '$tier', '$address', '$status' );"; done )"
# execute the query
mysql -uuser -ppassword gcloudinv -e "$query"

备注:

  • tail -n +2从输入中移除第一行
  • 不要使用来获取命令输出,它已经被废弃,不能嵌套。使用$( .. )
  • 您可以使用以下字符串将变量的内容输送到命令中,如:mysql -uuser -ppassword gcloudinv <<<"$allinstances"
  • 删除第一行后,它将该行转换为insert mysql语句。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52351437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档