关于数据库的去重+导入导出参数

数据库中存在大量的重复内容,并且存在着外键关系

先删除外键的,以内容分组,查询条数大于一的,将该id在多对多的表中删除

delete from poem2cls where poem_id in(select id from (select id,count(*)as count from poem group by content having count>1)as a);

然后在删除拥有重复内容的表中的重复数据

 delete from poem where id in(select id from (select id,count(*)as count from poem group by content having count>1)as a);

然后循环,直至没有重复内容

正则搜索

 SELECT 字段 FROM 表 WHERE 字段 REGEXP 正则表达式;

字符串处理的函数

replace('你 好',' ','') // 替换 

TRIM(LEADING ',' FROM ',,barxxx'); //删除指定首字符 如',‘ 

TRIM(BOTH ',' FROM ',,bar,,,'); //删除指定首尾字符 

TRIM(TRAILING ',' FROM 'barxxyz,,');  //删除指定尾字符 如',‘ 

导入导出数据库

导出

mysqldump -h IP -u 用户名 -p 数据库名 > 导出的文件名

0:(备份数据库即导出所有表以及数据 不加-d)
mysqldump -h localhost -u root -p test > G:\arcgisworkspace\zypdoc\test.sql

1:(备份数据库即导出所有表结构)
mysqldump -h localhost -u root -p -d test > G:\arcgisworkspace\zypdoc\test.sql
ENTER PASSWORD:******

2 :(导出某张表的表结构不含数据)
mysqldump -h localhost -u root -p -d test pollution > G:\arcgisworkspace\zypdoc\test.sql

3:(导出某张表的表结构和数据,不加-d)
mysqldump -h 127.0.0.1 -u root -p test pollution > G:\arcgisworkspace\zypdoc\test.sql

这里补两个挺重要的参数吧

-t
默认情况下, 导出的sql语句中会删除表和新建表, 但是有时候两个表的字段稍有不同, 所以新建表的操作就没有必要了. 这时候可以使用-t只导出插入语句

-c
导出全部字段时, insert带字段名, 默认情况下全倒出来的时候是不带字段名的, 如果两个表的字段顺序不一样,插入时候会出错, 这时可以使用-c

  

报了个错

很多人都可能碰到过这样的问题:在我们用DOS命令行备份、导出MySQL数据库的时候输入mysqldump语句
mysqldump -h localhost -u root -p shopdb >d:\beifen\shopdbbak.sql回车时命令行窗口会提示如下错
误:

mysqldump: unknown option '--no-beep'

        以致数据库备份无法完成。这是什么原因呢? 经过反复查找问题终于找到了出错的原因:原来是
mysqldump读取mysql安装文件my.cnf里的内容的默认设置,导致命令行无法正常运行,知道了这个原因那解
决方法也就有了,禁用默认设置!在执行mysqldump的时候加入选项--no-defaults (官方文档解释是Do not 
read default options from any options file),所以最后的备份语句改成如下:

mysqldump --no-defaults -h localhost -u root -p shopdb >d:\beifen\shopdbbak.sql

  

导入

0:导入数据库(首先得创建数据,再导入)
mysql -h localhost -u root -p(进入mysql下面)

create database abc;(创建数据库)
show databases;(就可看到所有已经存在的数据库,以及刚刚创建的数据库abc)
use abc;(进入abc数据库下面)
show tables;(产看abc数据库下面的所有表,空的)

source G:\arcgisworkspace\zypdoc\test.sql(导入数据库表)

show tables;(查看abc数据库下面的所有表,就可以看到表了)
desc pollution;(查看表结构设计)

select * from pollution;

exit(或者ctrl + c)退出mysql

将一张表导出到文本文件

use dbname //进入数据库

Database Changed
select * from 表 into outfile 'G:\\arcgisworkspace\\zypdoc\\text.txt'; (指导出数据的,注意转义字符哦)

// 一般形式
select [列名称] from tablename [where] into outfile '目标文件路径' [option]

其中option参数常用的5个选项

FIELDS TERMINATED BY ‘字符串’:设置字符串为字段的分割符,默认值为 \t;
FIELDS ENCLOSED BY ‘字符’:设置字符串括上char varchar text等字符型字段,默认值为 无任何符号;
FIELDS OPTIONALLY ENCLOSED BY ‘字符’:设置字符串括上字段的值,默认值为 无任何符号;
LINES STARTING BY ‘字符串’:设置每一行开头的字符,默认值为 无任何字符;
FIELDS ESCAPED BY ‘字符’:设置转义字符,默认值为 \;
LINES TERMINATED BY ‘字符串’:设置每行结束符,默认值为 \n;


// mysqldump导出
mysqldump -u root -p -T G:\arcgisworkspace\zypdoc\ abc pollution "--fields-terminated-by=," (记住不要任何多余的空格,也不用转移字符;-p后面也不用写password;注意目标目录是文件夹,文件名是表名,后缀是txt文件)


知识补充:
mysqldump -u root -p -T 目标目录 dbname tablename [option]

option 和 上面的mysql的一样,只是更改为

"--fields-terminated-by=字符"(不要任何多余的空格,就是指fields-terminated-by紧密相连的)

导入一张表

首先要有一张表,并且类型对应
LOAD DATA INFILE 文件名
INTO TABLE 表名 
FIELDS TERMINATED BY '\,'  // 上面的option
OPTIONALLY ENCLOSED BY '\"'  
LINES TERMINATED by'\r\n'  没有可以不写
ignore 1 lines  // ignore 1 lines是 忽略第一行的标题行。mei
(id,name,value);  //字段

  

posted @ 2018-06-14 07:39  瓜田月夜  阅读(298)  评论(0编辑  收藏  举报