2016-08-03 54 views
2

我正在嘗試使用工作臺將csv上傳到MySQL中,到目前爲止,我所有的嘗試都沒有成功。第1行不包含所有列的數據

我最初試圖使用「上傳」功能,但它抱怨我有任何空/空字段。

我現在在嘗試使用此功能:

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個沒有按「T包含所有列的數據

我有看答案爲thisthis的問題,但也沒有解決了我的問題。

表創建查詢:

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」和「供應商ID」是空的看到,即使它們的外鍵的字段。

的CSV的每一行適當的索引(即有足夠的字段來匹配表):

1,1,,P7YCGPF,Abg va hfr,Nfcver Npre Yncgbc,13,"Qngr npdhverq: 61/52/7566 
Zbqry: 0297T 
Frevny Ahzore: YKE057551588125P16156",0,1, 

什麼錯?

+0

你是說從db到csv的查詢你用什麼工具查詢到csv –

+0

對不起@reds我不太關注你在問什麼? – Ben

+1

@Ben看起來錯誤來自'.csv'文件中的空字符串值。 「錯誤1261」是MySQL沒有插入任何東西而不能插入NULL的結果。所以如果你的'.csv'文件是這樣的:''a','b','c','','e',MySQL不知道如何處理這個''''值,除非它被改變了從''''到'NULL'就像:''a','b','c','NULL','e''。我不知道我是否正確理解你的問題,但如果這個答案似乎正確,我願意進一步幫助。 – ThoseKind

回答

1

您在csv文件的任何字段中的數據是否包含逗號?當你試圖將其上傳到MySQL時,這會導致字段終止標準失效。如果是這種情況,請嘗試將其保存爲製表符分隔txt文件,並與

fields terminated BY '\t' 

對不起更換

fields terminated BY ',' 

,如果這是不正確的回答你的問題,我想張貼此作爲一個評論,但我的名聲還不夠高:P

+0

沒有在csv中有什麼地方不應該有的逗號。正如您從摘錄中看到的那樣,錯誤在「第1行」處出現,我已經將它列入比較。不過,我會將其另存爲製表符分隔,然後重試。 – Ben

相關問題