Mysql 第1行没有';不包含所有列的数据

Mysql 第1行没有';不包含所有列的数据,mysql,csv,Mysql,Csv,我正在尝试使用工作台将csv上传到MySQL中,到目前为止,我所有的尝试都被证明是徒劳的 我最初尝试使用“上传”功能,但它抱怨我有任何空字段 我现在正尝试使用此功能: LOAD DATA infile 'C:\\temp\\SubEq.csv' INTO TABLE cas_asset_register.subequipment fields terminated BY ',' lines terminated BY '\n' (seid, parentme, @vparentse, name,

我正在尝试使用工作台将csv上传到MySQL中,到目前为止,我所有的尝试都被证明是徒劳的

我最初尝试使用“上传”功能,但它抱怨我有任何空字段

我现在正尝试使用此功能:

LOAD DATA infile 'C:\\temp\\SubEq.csv'
INTO TABLE cas_asset_register.subequipment
fields terminated BY ','
lines terminated BY '\n'
(seid, parentme, @vparentse, name, status, description, equipmenttype, comments, removed, active, @vsupplierid)
SET
ParentSE = nullif(@vparentse,''),
SupplierId = nullif(@vsupplierid,'')
;
但它似乎再次抱怨(可能)同样的事情:

错误代码:1261。第1行不包含所有列的数据

我已经看了关于和问题的答案,但都没有解决我的问题

表创建查询:

CREATE TABLE `subequipment` (
  `SEId` int(11) NOT NULL AUTO_INCREMENT,
  `ParentME` int(11) DEFAULT NULL,
  `ParentSE` int(11) DEFAULT NULL,
  `Name` varchar(255) DEFAULT NULL,
  `Status` varchar(100) DEFAULT NULL,
  `Description` varchar(255) DEFAULT NULL,
  `EquipmentType` int(11) DEFAULT NULL,
  `Comments` text,
  `Removed` tinyint(1) NOT NULL DEFAULT '0',
  `Active` tinyint(1) DEFAULT '1',
  `SupplierId` int(11) DEFAULT NULL,
  PRIMARY KEY (`SEId`),
  UNIQUE KEY `Unique_Constraint_ME` (`Name`,`ParentME`,`Active`),
  UNIQUE KEY `Unique_Constraint_SE` (`Name`,`ParentSE`,`Active`),
  KEY `ParentME` (`ParentME`),
  KEY `ParentSE` (`ParentSE`),
  KEY `EquipmentType` (`EquipmentType`),
  KEY `fk_subequipment_supplierequipment` (`SupplierId`),
  KEY `fk_subequipment_status_idx` (`Status`),
  CONSTRAINT `fk_subequipment_majorequipment` FOREIGN KEY (`ParentME`) REFERENCES `majorequipment` (`MEId`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `fk_subequipment_status` FOREIGN KEY (`Status`) REFERENCES `componentstatus` (`StatusName`) ON UPDATE CASCADE,
  CONSTRAINT `fk_subequipment_subequipment` FOREIGN KEY (`ParentSE`) REFERENCES `subequipment` (`SEId`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `fk_subequipment_supplierequipment` FOREIGN KEY (`SupplierId`) REFERENCES `supplierinfo_equipment` (`SupplierId`) ON UPDATE CASCADE,
  CONSTRAINT `fk_subequipment_userdefinedcode` FOREIGN KEY (`EquipmentType`) REFERENCES `userdefinedcode` (`UDCId`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
从我的上传查询中可以看到,我希望“ParentSE”和“SupplierId”为空,即使它们是外键字段

csv的每一行都有适当的索引(即有足够的字段与表格匹配):


出什么问题了?

csv文件中任何字段中的数据是否包含逗号?当您试图将字段上传到MySQL时,这会破坏字段终止条件。如果是这种情况,请尝试将其保存为以制表符分隔的txt文件并替换

fields terminated BY ','


很抱歉,如果这不是您问题的正确答案,我想将其作为评论发布,但我的声誉不够高:p

我也遇到了同样的问题,通过比较CSV文件中的列和数据库中的表解决了问题。列数、列类型,以及在某些情况下字符串类型的空值(例如,字符串类型为“”)应相同

我的CSV文件中的最后一行出现了相同的错误。这也许不能解决你的问题,但它解决了我的问题,希望它能帮助别人


对我来说,我需要一个回车字符在文件的最后一行进入一个新行。现在导入没有错误

对我来说,问题是文件必须用制表符分隔。我读到一些用户报告说文件必须用分号分隔。

你是说从db查询到csv从query到csvI使用了什么工具?对不起@reds我不太明白你的意思?@Ben看起来错误来自
.csv
文件中的空字符串值。
错误1261
是由于MySQL没有任何要插入的内容,而不能插入
NULL
。因此,如果您的
.csv
文件类似于:
'a',b','c','e'
MySQL不知道如何处理
'
值,除非它从
'
更改为
NULL
类似于:
'a',b',c',NULL',e'
。我不确定我是否正确理解了你的问题,但如果这个答案似乎正确,我愿意进一步帮助你;就像您可能在正确的轨道上一样,因为我希望这些值中至少有两个是空的(因此
SET ParentSE=nullif(@vparentse,”)
部分)。我只是不确定这是否正确实现了您的
NULLIF
语句看起来是正确的,所以我唯一能想到的另一件事是仔细检查
.csv
文件,确保它们确实包含您期望的
'
空字符串。一旦你证实了这一点,我就不明白为什么会出错。您可以编写一个脚本,将
.csv
文件解析为
'
,并将这些
'
替换为
NULL
,但我不确定这对您是否可行。很抱歉,我无法在MySQL方面进一步帮助您,但我会进一步调查,看看您能找到什么。如果没有什么,我可以用一个程序来替换
'
,但这取决于你。csv中没有任何不应该有的逗号。正如您从摘录中看到的,错误是在“第1行”抛出的,我将其包括在内以供比较。但是,我会将其另存为分隔的选项卡,然后重试。
fields terminated BY ','
fields terminated BY '\t'