Mysql 第1行没有';不包含所有列的数据
我正在尝试使用工作台将csv上传到MySQL中,到目前为止,我所有的尝试都被证明是徒劳的 我最初尝试使用“上传”功能,但它抱怨我有任何空字段 我现在正尝试使用此功能: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,
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'