我写了一个从数据库中提取数据的脚本。
现在我想增强这个脚本来创build一个数据库返回的XML文件。
我怎么可能将该string转换为shell脚本中的xml文件。
script.sh
#!/bin/sh echo 'SELECT TABLE_NAME AS "Table Name", table_rows AS "Quant of Rows", ROUND((data_length + index_length)/1024/1024,2) AS "Total Size Mb" FROM information_schema.TABLES WHERE information_schema.TABLES.table_schema="database_name";' | mysql -u root -pmysql
从数据库获取数据
"Table Name\tQuant of Rows\tTotal Size Mb\ntable_1\t2\t0.02\ntable_2\t1\t0.02\ntable_3\t142\t0.02\ntable_4\t50839\t5.03\ntable_5\t16573\t5.13\ndlr\t0\t0.02\ntable_6\t6\t0.02\ntable_7\t0\t0.03\ntable_8\t2\t0.08\ntable_9\t4\t0.02\n"
我想写一些将该string转换为xml文件的脚本的逻辑。
我怎么可以这样做? 什么是处理这种情况的首选方法?
你可以用awk来做到这一点。 awk -F将告诉awk使用制表符作为字段分隔符。 $ 1将成为表名,$ 2将成为行的数量,等等。 另外,$ 0是指整行,而$ NF总是最后一个字段。
cat data | awk -F\t '{printf("<xml-tag-1>%s</xml-tag-1>\n<xml-tag-2>%s</xml-tag2>\n", $1, $2 )}'
这将为前两个字段手工创buildxml。
#!/bin/sh mysql -u root -pmysql --xml > /home/test/Desktop/temp.xml << eof SELECT TABLE_NAME AS "Table Name", table_rows AS "Quant of Rows", ROUND((data_length + index_length)/1024/1024,2) AS "Total Size Mb" FROM information_schema.TABLES WHERE information_schema.TABLES.table_schema='database_name'; eof