将 linux 命令的输出导入 MySQL 表



我正在尝试创建我的谷歌云SQL实例的清单并将其保存在单独的MySQL数据库中,以便我可以将其输入到我们现有的本地清单中。

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

$> gcloud sql instances list

这将返回类似以下内容:

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 脚本中,如果我像这样运行:

$> allinstances=`gcloud sql instances list`

设置一个名为allinstances的变量,然后如何将其插入名为gcloudinv的 mysql 表中

我已经尝试过这个期望错误:

$> mysql -uuser -ppassword gcloudinv < allinstances

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

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

谢谢

# 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从输入中删除第一行
  • 不要使用" ' 获取命令输出,它已被弃用,无法嵌套。使用$( .. )
  • 您可以使用 HERE 字符串将变量的内容通过管道传输到命令中,例如:mysql -uuser -ppassword gcloudinv <<<"$allinstances"
  • 删除第一行后,将行转换为插入 mysql 语句。

相关内容

  • 没有找到相关文章

最新更新