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 '
' #:指行终止符
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 '
';#行以
结束
问题1 导入的表的某个字段超长
在db2 和 oracle 中可以使用 blog 类型进行存储。mysql中也有类似的数据类型,但是因为是要对字符串进行处理,所以选择了 text 类型。
问题2 导出的某个字段变成科学记数法
optionally enclosed by ' '# 为制表符,防止变成科学记数法
问题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语句是进行批量更新或者删除的时候就会提示这个错误。
解决方法如下:
- 打开Workbench的菜单[Edit]->[Preferences...]
- 切换到[SQL Editor]页面
- 把[Forbid UPDATE and DELETE statements without a WHERE clause (safe updates)]之前的对勾去掉
- 点击[OK]按钮
- 最后记得要重启一下sql editor,建立一个新的连接就可以了。