Mysql中的load语句对null的处理
来源:互联网 发布:it行业 云计算 编辑:程序博客网 时间:2024/05/01 19:15
Load语法
LOAD DATA [LOW_PRIORITY] [LOCAL] INFILE 'file_name.txt' [REPLACE | IGNORE] INTO TABLE tbl_name [FIELDS [TERMINATED BY '\t'] [OPTIONALLY] ENCLOSED BY ''] [ESCAPED BY '\\' ]] [LINES TERMINATED BY '\n'] [IGNORE number LINES] [(col_name,...)]
LOAD DATA INFILE语句从一个文本文件中以很高的速度读入一个表中。如果指定LOCAL关键词,从客户主机读文件。如果LOCAL没指定,文件必须位于服务器上。(LOCAL在MySQL3.22.6或以后版本中可用。)
为了安全原因,当读取位于服务器上的文本文件时,文件必须处于数据库目录或可被所有人读取。另外,为了对服务器上文件使用LOAD DATA INFILE,在服务器主机上你必须有file的权限。
代码举例:
load data local infile 'jingo.csv' into table th_dept_city_day_order_sum fields terminated by '\\t' enclosed by '' lines terminated by '\\n' (id,row_hash,province_id,province_name,city_id,city_name,complaint_num,order_num,order_date,order_year_week,order_year_mon,business_source,bu_code,bu_name,dept_id_1,dept_name_1,dept_id_2,dept_name_2,dept_id_3,dept_name_3)
NULL 值的处理有很多,取决于用户所使用的FIELDS 和LINES 选项:
对于缺省的FIELDS 和LINES 值,输出时,NULL 被写成\N,当读入时,\N 被作为NULL 读入(假设ESCAPED BY 字符为 “\”)。
问题描述:
在导入时候,有时候给的数据并不规范,如null的字段在csv文件里用N表示(正确格式应该为\N),下面截图
此时采用默认的load语句,在mysql中字段为varchar时候就会存储N值,而如果为int类型时候则直接报错。
解决办法:
(1) 生成csv文件时候手动判断null,如果为null赋值对应的默认值。
(2) Load语句添加参数 escaped by ‘N’ ,并且不能添加replace关键字,此时,int类型的存储默认值,varchar类型的存储空字符串。
如load语句
load data local infile 'jingo.csv' into table th_dept_city_day_order_sum fields terminated by '\\t' enclosed by '' escaped by 'N' lines terminated by '\\n' (id,row_hash,province_id,province_name,city_id,city_name,complaint_num,order_num,order_date,order_year_week,order_year_mon,business_source,bu_code,bu_name,dept_id_1,dept_name_1,dept_id_2,dept_name_2,dept_id_3,dept_name_3)
说明:
ENCLOSED BY参数,说明fields中每个字段被参数字符包围,在load数据入表时候,会去除ENCLOSED BY参数字符,此时截图中的N就变成了空字符,此时如果为varchar字符串则赋值,如果为int或其他类型则赋值默认值。
如果添加replace关键字,空字符串遇到varchar类型能正常赋值,而空字符串遇到int等类型,直接报错了,所以此时还需要手动赋默认值。
(3) 在不需要覆盖更新的功能的话(即不用replace关键字),最优化的脚本解决方案(2),如果需要覆盖功能的话(即用replace关键字),建议int类型等字段手动赋值默认值,有助于特殊警示作用(有些mysql的默认值不太理想,如日期等),varchar字段自动赋值空字符串。
不需要自动更新的load语句
load data local infile 'jingo.csv' into table th_dept_city_day_order_sum fields terminated by '\\t' enclosed by '' escaped by 'N' lines terminated by '\\n' (id,row_hash,province_id,province_name,city_id,city_name,complaint_num,order_num,order_date,order_year_week,order_year_mon,business_source,bu_code,bu_name,dept_id_1,dept_name_1,dept_id_2,dept_name_2,dept_id_3,dept_name_3)
需要自动更新的load语句
load data local infile 'jingo.csv' replace into table th_dept_city_day_order_sum fields terminated by '\\t' enclosed by '' escaped by 'N' lines terminated by '\\n' (id,row_hash,province_id,province_name,city_id,city_name,complaint_num,order_num,order_date,order_year_week,order_year_mon,business_source,bu_code,bu_name,dept_id_1,dept_name_1,dept_id_2,dept_name_2,dept_id_3,dept_name_3)
- Mysql中的load语句对null的处理
- mysql 对null的处理
- MySQL查询对NULL的处理
- MySql索引中,对NULL的处理
- MySQL查询对NULL的处理
- MySQL查询对NULL的处理
- MySQL查询对NULL的处理
- MySql索引中,对NULL的处理
- MySQL查询对NULL的处理
- MySql索引中,对NULL的处理
- orale中sql语句对null值的处理
- MySQL中order by语句对null字段的排序
- MySQL中order by语句对null字段的排序
- MySQL中order by语句对null字段的排序
- mysql 分区管理和对NULL的处理
- mysql数据库order by语句 null 处理
- freemarker 对null 的处理
- JSON对null的处理
- Sublime Text 2 快捷键
- Spinner的简单使用
- Android 登陆功能的实现。
- ios项目打包
- shader Cg 基本数据类型
- Mysql中的load语句对null的处理
- HYSBZ 2588Spoj 10628. Count on a tree
- numa distance 2
- 数组中出现次数超过一般的数字
- 《C++ Primer Plus(第六版)》(5)(第四章 复合类型 答案2)
- 连续输入密码错误3次,第二天才能登录
- 机器学习-svm.点滴积累
- mysql合并两个表
- linux下安装Mysql