2014-05-25 22 views
0

我正在使用SQLYog旗艦版。上傳Excel到MySQL - 與枚舉字段的問題

我有一個枚舉字段的表,可以得到的3個numbres一個 - 0,1,2 我做了默認值爲0號(寫它作爲默認的表)

我創建一個表從Excel文件中,然後將表格內容插入到我的表格中。 問題是隻與枚舉領域:

  1. 如果我離開這個欄留空,則保持爲空,如果我輸入「0」作爲Excel號犯規獲得默認值
  2. ,那麼它保持空時,我如果我輸入「0」作爲Excel文本中插入我的表
  3. ,那麼當我插入我的表

爲什麼我想在Excel中定義它,這樣我可以上傳保持爲空它與零值?

我的工作步驟: 1.準備Excel文件 2.上傳EXCEL到由EXCEL定義 3. INSERT INTO創建我的表一個新的臨時表(SELECT * FROM TEMP_TABLE)

+0

如果'號碼ENUM( '0', '1', '2')'然後'INSERT INTO噸(數字)VALUES(2),('2'),('3');'給出'1','2','2'。 0作爲編號不存在。如果使用'INSERT INTO t(數字)VALUES(NULL)',它會添加一個默認值嗎? –

+0

有一個迴旋處。您可以爲導入創建一個表,並使用通常的int或nvarchar而不是ENUM。然後將表格中的數據複製到您的表格中。 –

+0

KEIV - 如果我不插入任何東西,我收到警告「字段不能爲NULL」,它保持空。 – Alex

回答

0

我試圖將一個表與詮釋複製到與ENUM一個表,並在phpMyAdmin以下工作:

INSERT INTO tenum (enumf) SELECT '0' FROM excel 

而是在選擇輸入的所有列,你也可以嘗試

ALTER TABLE excel MODIFY numb VARCHAR(255); 

由於我無法看到表格的結構,因此很難寫出確切的代碼。第一行適用於我,並且假設您對excel中的ENUM字段沒有任何有意義的值(我從原始問題中理解了這種方式)。如果它有意義,那麼你可以在SELECT中編寫IF語句(IF(numb = 0,'0',numb))。但是,如果我不瞭解表中的麻木字段類型和ENUM定義,那麼編寫可行的代碼就非常困難。表tenum的

結構:表中的

CREATE TABLE IF NOT EXISTS `tenum` (
    `enumf` enum('0','dsx') NOT NULL DEFAULT '0' 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

結構練成:

CREATE TABLE IF NOT EXISTS `excel` (
    `numb` int(11) NOT NULL 
) ENGINE=MyISAM DEFAULT CHARSET=latin1; 
+0

我聽不懂。你告訴你的表「tenum」什麼是enumf的價值?爲什麼「選擇'0'?如果我有時有另一個值(來自枚舉) – Alex

+0

這意味着它在sql中工作,如果你有其他值,你可以只替換默認值。在excel表格中向我展示兩個變體int(或者它是字符串?)字段,我將重寫代碼。 –

+0

只要給我一個在兩行mysql的excel表的例子。 –