Mysql的大小写敏感问题总结

本文总结了工作中遇到的MySQL大小写敏感问题,包括数据库名、表名、字段名及内容的大小写处理。MySQL在Windows下不区分大小写,但Linux下默认区分。表名和数据库名的大小写敏感通过`lower_case_table_names`参数控制,字段和内容的敏感性由collate设置。推荐在需要大小写敏感时使用`utf8mb4_bin`排序规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前对mysql大小写敏感的问题不太在意,直到在工作上碰到了bug,才意识到问题的不可忽略性,于是在这简要总结一下。

工作上碰到的问题回顾

使用sqoop命令从hive往mysql导数据:

sqoop export --connect "jdbc:mysql://172.16.xxx.xxxx:3306/database1?useUnicode=true&characterEncoding=utf-8" 
--username=root --password=root --table tablename1 
--update-key id --update-mode allowinsert 
--export-dir /user/hive/warehouse/database1.db/tablename1 
--input-fields-terminated-by '\t' 
--input-null-string '\\N' --input-null-non-string '\\N' -m1

命令执行成功,无任何报错。但是让人奇怪的是,hive表中的记录数和mysql表中的记录数对不上,hive中是1000条,但是mysql中是981条。

将两表join连接,查看哪些记录没匹配上,发现:

hive表id hive表text mysql表id mysql表text
R3700 aaaa NULL NULL
r3700 bbbb r3700 bbbb

原来是因为数据导入方式是allowinsert即根据主键更新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值