mysql 系统错误1366(HY000):整数值不正确:''

nx7onnlm  于 2023-02-21  发布在  Mysql
关注(0)|答案(3)|浏览(142)

我从人口普查局下载了几个数据库-事实查询器:
https://factfinder.census.gov/faces/tableservices/jsf/pages/productview.xhtml?pid=ACS_pums_csv_2012_2016&prodType=document
开始使用加州住房数据库,使用CVed我取出所有的列,我不需要,然后继续创建一个模型在MySQL工作台,我后来通过命令行变成一个数据库:

-- MySQL Workbench Forward Engineering

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';

-- -----------------------------------------------------
-- Schema Census
-- -----------------------------------------------------

-- -----------------------------------------------------
-- Schema Census
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `Census` DEFAULT CHARACTER SET utf8 ;
USE `Census` ;

-- -----------------------------------------------------
-- Table `Census`.`Housing`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `Census`.`Housing` (
  `SERIALNO` BIGINT(13) NOT NULL,
  `DIVISION` INT(9) NULL,
  `PUMA` INT(4) NULL,
  `REGION` INT(1) NULL,
  `ST` INT(1) NULL,
  `ADJHSG` INT(7) NULL,
  `ADJINC` INT(7) NULL,
  `FINCP` INT(6) NULL,
  `HINCP` INT(6) NULL,
  `R60` INT(1) NULL,
  `R65` INT(1) NULL,
  PRIMARY KEY (`SERIALNO`))
ENGINE = InnoDB;

SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

创建数据库后,我继续导入数据:

LOAD DATA INFILE "C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/Housing_California.csv"
INTO TABLE housing
CHARACTER SET latin1
COLUMNS TERMINATED BY ','
LINES TERMINATED BY '\n';

但它不起作用,因为出现以下错误消息:
错误1366(HY 000):整数值不正确:第15行“FINCP”列的“”
现在,我知道在我的那一行我有一个空白值,那一列指的是家庭收入,在某些情况下是0,所以人口普查局把它留为空白:

2012000000135,9,6515,4,6,1045360,1056030,,43100,1,0

我可以把所有的空白单元格都改成0,但我觉得必须有更好的方法来处理事情。
希望你能给予我一个提示。

58wvjzkj

58wvjzkj1#

这个可以帮你
您可以更改导入,而不是更改表定义
这样,FINCP的瓦尔在插入之前存储在var中,您可以检查正确的结果
在我的建议中,如果null被赋给'',但是你可以赋给你喜欢的(适当的)值

LOAD DATA INFILE "C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/Housing_California.csv"
  INTO TABLE housing
  CHARACTER SET latin1
  COLUMNS TERMINATED BY ','
  LINES TERMINATED BY '\n'
   ( `SERIALNO`,  `DIVISION`,  `PUMA`,  `REGION`,
    `ST`,  `ADJHSG`,  `ADJINC`,  @var_fincp,
    `HINCP`,  `R60`,  `R65`)
  set `FINCP` = nullif(@var_fincp,'')
  ;
5jvtdoz2

5jvtdoz22#

Kiko软件,
好吧,所以我读了你张贴的链接,我的命令行结束了;

LOAD DATA INFILE "C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/Housing_Illinois.csv"
INTO TABLE housing
CHARACTER SET latin1
COLUMNS TERMINATED BY ','
LINES TERMINATED BY '\n'
(@SERIALNO, @DIVISION, @PUMA, @REGION, @ST, @ADJHSG, @ADJINC, @FINCP, @HINCP, @R60, @R65)
SET
SERIALNO = nullif(@SERIALNO,''),
DIVISION = nullif(@DIVISION,''),
PUMA = nullif(@PUMA,''),
REGION = nullif(@REGION,''),
ST = nullif(@ST,''),
ADJHSG = nullif(@ADJHSG,''),
ADJINC = nullif(@ADJINC,''),
FINCP = nullif(@FINCP,''),
HINCP = nullif(@HINCP,''),
R60 = nullif(@R60,''),
R65 = nullif(@R65,'');

我得到了这个信息
'对于第12 t行的列'R65',整数值:“
那是什么意思?
这是第12行的数据:
2012000000318,3,1602,2,17,1045360,1056030,,,,

x6492ojm

x6492ojm3#

当您尝试在mysql表中插入数据时,如果设置了请求填充所有字段的,则会收到此错误。
您可以配置您的mysql设置为NULL,如果你不发送值。临时解决方案(直到你重新启动服务器)运行这个查询:设置@@全局.sql模式= '无自动创建用户,无引擎替换';
也可以在my.ini文件中设置。下面是模式的详细信息:http://webnetkit.com/error-sqlstatehy000-general-error-1366-incorrect-integer-value-for-column/

相关问题