Mysql 中的load 语句对null 的处理
Load 语法
LOAD DATA INFILE语句从⼀个⽂本⽂件中以很⾼的速度读⼊⼀个表中。如果指定LOCAL关键词,从客户主机读⽂件。如果LOCAL 没指定,⽂件必须位于服务器上。(LOCAL在MySQL3.22.6或以后版本中可⽤。)
为了安全原因,当读取位于服务器上的⽂本⽂件时,⽂件必须处于数据库⽬录或可被所有⼈读取。另外,为了对服务器上⽂件使⽤LOAD DATA INFILE,在服务器主机上你必须有file的权限。
代码举例:
NULL 值的处理有很多,取决于⽤户所使⽤的FIELDS 和LINES 选项:
对于缺省的FIELDS 和LINES 值,输出时,NULL 被写成\N,当读⼊时,\N 被作为NULL 读⼊(假设ESCAPED BY 字符为 “\”)。问题描述:
mysql语句分类 在导⼊时候,有时候给的数据并不规范,如null的字段在csv⽂件⾥⽤N表⽰(正确格式应该为\N),下⾯截图
此时采⽤默认的load语句,在mysql中字段为varchar时候就会存储N值,⽽如果为int类型时候则直接报错。
解决办法:
(1) ⽣成csv⽂件时候⼿动判断null,如果为null赋值对应的默认值。
(2) Load语句添加参数 escaped by ‘N’ ,并且不能添加replace关键字,此时,int类型的存储默认值,varchar类型的存储空字符串。
laravel框架开发实战如load语句
说明:
ENCLOSED BY参数,说明fields中每个字段被参数字符包围,在load数据⼊表时候,会去除ENCLOSED BY参数字符,此时截图中的N就变成了空字符,此时如果为varchar字符串则赋值,如果为int或其他类型则赋值默认值。
网页代码生成器使用夫唱妇随下句是什么 如果添加replace关键字,空字符串遇到varchar类型能正常赋值,⽽空字符串遇到int等类型,直接报错了,所以此时还需要⼿动赋默认值。
(3) 在不需要覆盖更新的功能的话(即不⽤replace关键字),最优化的脚本解决⽅案(2),如果需要覆盖功能的话(即⽤replace关键字),建议int类型等字段⼿动赋值默认值,有助于特殊警⽰作⽤(有些mysql的默认值不太理想,如⽇期等),varchar字段⾃动赋值空字符串。 不需要⾃动更新的load语句
LOAD DATA [LOW_PRIORITY] [LOCAL ] INFILE '' [REPLACE | IGNORE]
INTO TABLE tbl_name
[FIELDS
[TERMINATED BY '\t']
[OPTIONALLY] ENCLOSED BY '']
animation中文意思[ESCAPED BY '\\' ]]
git部署代码到服务器[LINES TERMINATED BY '\n']
[IGNORE number LINES] [(col_name,...)]
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_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'
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'需要⾃动更新的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
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论