一直没怎么用过mysql数据库, 今天用mysqldump备份了一下表结构, 记录一下遇到的问题
1. mysqldump默认导出没有事务和存储过程, 如果想导出这些可以用 -E 和 -R[--routines Dump stored routines (functions and procedures)]
2. mysqldump默认导出表中是带着触发器的, 不要触发器可以用--skip-triggers
3. 默认导出是连数据一块儿导出,不要数据可以用(-d, --no-data)
mysqldump --host=${source_ip} --user=${user} --password=${passwd} --no-data --databases ${database} --table ${table} -R -E >/tmp/${table}.sql
4. 从本地导入数据
mysql --user=${user} --password=${passwd} --host=${mysql_ip} ${database} --default-character-set=utf8 <<EOF LOAD DATA LOCAL INFILE '${file}' INTO TABLE ${table} FIELDS TERMINATED BY ',';
5. 从target服务器上导入数据
mysql --user=${user} --password=${passwd} --host="172.0.0.1" ${database} --default-character-set=utf8 <<EOF LOAD DATA INFILE '${file}' INTO TABLE ${table} FIELDS TERMINATED BY ',';
数据库和数据在同一台服务器
6. mysql的注释
mysql的注释有4 种 :
“#” : # 开头到行尾的都为注释,只能注释一行
“-- ” (2个减号 一个空格) : -- 开头到行尾都为注释 , 只能注释一行
“/* xxx */" : 可以注释多行,但是一定要闭合,不然出错
”/*! 数字 代码 */" : 可以跨行注释,但是一定要闭合,不然出错。
其中 , ”/*! 数字 代码 */" 是有特殊含义的
例如: /*!40101 SET NAMES gbk */; 代表的是 如果mysql 版本大于4.0.1.01 ,就执行后面的 set names gbk 这句代码。
这就有一个好处,这样就可以把mysql 特有的功能用这种注释,给注释掉,对于非mysql数据库可以正常运行,不需要修改,
而对于mysql 数据库,就可以利用这些特性。