分类: Mysql/postgreSQL
2013-01-03 00:36:54
在应用场景上,配置MySQL主从前,需要将Master中已有的数据备份至Slave机器中。
MySQL数据库的导出(包括表结构和数据)
mysqldump -u用户名 -p密码 数据库名 > 数据库.sql
MySQL数据库表结构导出
mysqldump -u用户名 -p密码 -d 数据库名| sed 's/AUTO_INCREMENT=[0-9]*\b//' > 数据库.sql
MySQL中的数据库的导入
mysql 数据库名 < 数据库.sql
导入数据库后,发现存储过程并没有一并带过来,所以需要导出存储过程
MySQL存储过程的导出
mysqldump -ntd -R --triggers=false 数据库名 > sp.sql
MySQL存储过程的导入
mysql 数据库名 < sp.sql
MySQL本身还支持文本文件的数据导入导出
mysqlimport可以完成文本数据的直接导入
基本用法 mysqlimport -L -u username -p -h 127.0.0.1 dbname table_name.dat
mysqlimport有时候还需要--fields-terminated-by 来指定记录中的字段分隔符
--fields-enclosed-by 来指定记录之间的分隔符,一般为'\n'
mysqlimport默认字段分隔符是单空格或tab,记录分隔符默认是'\n'
当导入一个有百万行记录的表时,用这种方式尤其比较快,但是表的索引可以采取导入数据后重建,
也可以建表就是创建索引。
遇到的情况是表的引擎为myisam时,先导入表的数据,然后再重建索引的方式比较快。
mysql命令中也可以导入数据
mysqlimport与load data infile的区别可能是mysqlimport在导入数据时,会比load data 做更严格的校验,例如,字符集
在构造原始的数据的时候,一旦有字符数据要注意字符集,分隔符的替换可以使用sed来完成处理
sed可完成tab到空格的替换 sed -e 's/[[:space:]][[:space:]]*/ /g'
空格到其他字符的替换 sed -e 's/[ ][ ]*/,/g'
数据导出成文本
在mysql命令行中导出
select field_names from table_name into outfile 'table_name.dat'
在命令行导出sql语句的方式
mysqldump -h db_host_ip -u root -p 数据库名 表名 > 表名.dat