刚装上mysql对各种操作和设置都不太习惯,因为需要构建数据库进行后面的工作,从网上下载了一个.csv文件想直接传到数据库中没想到还出现了一些小状况,写下来帮助以后遇到相同问题的人
首先先在某个database中建立table,我创建表的语句如下
CREATE TABLE `china_regions` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '县及县以上行政区划代码表',
`code` varchar(11) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '区域代码',
`parent_id` varchar(11) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '父级区域代码',
`name` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '区域名称',
`level` int(1) DEFAULT NULL COMMENT '行政区划等级',
`status` int(20) DEFAULT '0' COMMENT '开通状态,默认值0:开通,1:不开通',
PRIMARY KEY (`id`),
KEY `china_regions` (`id`,`code`,`parent_id`,`level`,`status`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=3511 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='中国地区表';
然后把相应文件读取至table中具体语句如下
load data infile 'C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/areas.csv'
-> into table china_regions character set gb2312
-> fields terminated by ',' optionally enclosed by ""escaped by""
-> lines terminated by '\r\n'
-> starting by '' ignore 2 lines;
其中datatest1是数据库名,china_regions是table名。因为数据中有中文所以加上了characterset gb2312
第一个问题:
The MySQL server is running with the --secure-file-privoption so it cannot execute this statement
解决方法:
接着把需要导入的csv文件移动到显示的secure_file_priv中,我是默认安装路径,如果找不到ProgramData的位置就打开C盘->查看->隐藏的项目。
第二个问题:
Incorrect integer value: '' for column 'id' at row 1
解决方案:
my.ini中查找sql-mode,默认为
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION",
将其修改为sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION",重启mysql后即可