2018-7-13 mysql 导入大文件并进行替换字符串

2018-7-13 mysql 导入大文件并进行替换字符串

文件导入替换导出

############ 新建一张表 ########
use test;
drop table user_data;
CREATE TABLE IF NOT EXISTS `user_data` (
  `user_id` varchar(1000) NOT NULL,
  `c1` text NULL)
ENGINE = InnoDB;
# 建立索引
create index user_id_zh on user_data (user_id);

########### 导入csv文件#################
###########  导入导出的目录一定要注意,是有权限要求的。################
load data infile "C:\\ProgramData\\MySQL\\MySQL Server 5.7\\Uploads\\user_data.csv"  #CSV文件存放路径
into table user_data#--要将数据导入的表名
fields terminated by ',' # 这是指出csv文件中字段终止符,也就是数据之间的分隔符;
optionally enclosed by '"' # 封套符
escaped by '"'  # 指出封套符;
lines terminated by '\r\n' #:指行终止符
ignore 1 lines;#忽略表头


############  替换不需要的字符 ######################
select * from user_data;
update user_data set c1 = replace(c1,"[","") ;
update user_data set c1 = replace(c1,"]","") ;
update user_data set c1 = replace(c1,"\"","") ;
update user_data set c1 = replace(c1,"\"","") ;
update user_data set c1 = replace(c1,"\,","&") ;

############  导出文件  ####################
select * from user_data   
into outfile "C:\\ProgramData\\MySQL\\MySQL Server 5.7\\Uploads\\user_data_out.csv" 
fields terminated by ','#字段间以,号分隔
#optionally enclosed by '"'#字段用"号括起
#escaped by '"'#字段中使用的转义符为"
lines terminated by '\r\n';#行以\r\n结束

问题1 导入的表的某个字段超长

在db2 和 oracle 中可以使用 blog 类型进行存储。mysql中也有类似的数据类型,但是因为是要对字符串进行处理,所以选择了 text 类型。

问题2 导出的某个字段变成科学记数法

optionally enclosed by '\t'#\t  为制表符,防止变成科学记数法

问题3 sql错误 1175

MySQL Workbench “Error Code: 1175” 的解决方法:
当用MySQL Workbench进行数据库的批量更新时,执行一个语句会碰到以下错误提示:

Error Code: 1175
You are using safe...without a WHERE that uses a KEY column

因为是MySQL Workbench的默认的安全设置是不能批量更新表的。当要执行的SQL语句是进行批量更新或者删除的时候就会提示这个错误。

解决方法如下:

  1. 打开Workbench的菜单[Edit]->[Preferences...]
  2. 切换到[SQL Editor]页面
  3. 把[Forbid UPDATE and DELETE statements without a WHERE clause (safe updates)]之前的对勾去掉
  4. 点击[OK]按钮
  5. 最后记得要重启一下sql editor,建立一个新的连接就可以了。
posted @ 2018-07-13 14:16  数据分析之路  阅读(240)  评论(0编辑  收藏  举报