我在localhost中使用MySQL作为在R中执行统计的"查询工具",也就是说,每次运行R脚本时,我创建一个新数据库(A),创建一个新表(B),将数据导入B ,提交查询以获得我需要的内容,然后我删除B并删除A.
它对我来说很好,但我意识到ibdata文件大小正在迅速增加,我在MySQL中没有存储任何内容,但ibdata1文件已超过100 MB.
我使用或多或少的默认MySQL设置进行设置,有没有办法可以在一段固定的时间后自动缩小/清除ibdata1文件?
我正在编写一个单行命令,它将所有数据库备份到各自的名称中,而不是使用在一个sql中转储所有数据库.
例如:db1保存到db1.sql,db2保存到db2.sql
到目前为止,我收集了以下命令来检索所有数据库.
mysql -uuname -ppwd -e 'show databases' | grep -v 'Database'
Run Code Online (Sandbox Code Playgroud)
我打算用awk来管它做类似的事情
awk '{mysqldump -uuname -ppwd $1 > $1.sql}'
Run Code Online (Sandbox Code Playgroud)
但这不起作用.
我是bash的新手,所以我的想法可能是错的.
我该怎么做才能让它以各自的名义导出数据库?
更新:
好的,必须最终设法让它从下面的提示工作.
这是最后的脚本
# replace [] with your own config
# replace own dir to save
# echo doesn't work. hmm...
mysql -u[uname] -p'[pwd]' -e "show databases" \
| grep -Ev 'Database|information_schema' \
| while read dbname; \
do \
echo 'Dumping $dbname' \
mysqldump -u[uanme] -p'[pwd]' $dbname > ~/db_backup/$dbname.sql;\
done
Run Code Online (Sandbox Code Playgroud)
回声部分虽然不起作用.