我正在尝试创建google实例的清单,并将其保存在一个单独的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可以使用的格式。
理想情况下,我将覆盖这个基本库存每天。
谢谢
发布于 2018-09-16 06:37:11
# 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"https://stackoverflow.com/questions/52351437
复制相似问题