2014-05-20 55 views
1

我試圖在我的表格中插入13k行。 我的表結構如下在現有表格中插入13000行

ID | Col1 | Col2 | Col3 | Col4 | Col5 | Col6 |

ID是主(自動遞增)柱。

我需要Col1中反映數爲1〜13000

列的其餘部分將保持空白。

我相信這個問題以前有人問,但我真的很困惑,如何做有效的。 感謝

+1

沒有「有效」的方式:做13000個刀片。 mysql擴展語法或13,000個獨立的插入。 –

回答

3

http://naspinski.net/post/Running-a-For-Loop-in-MS-SQL.aspx

按照張貼在這裏的例子。您While (@count < 40)將是13000,Set @count = 0將是1,而不是insert into some_table ([columnA], [column]) Values ('val1', 'val2')它只會有[columnA]@count而不是val1。下面的修改示例應該足夠了。

SQL命令:

DECLARE @count INT 
SET @count = 1 
WHILE (@count < 13001) 

BEGIN 
    INSERT INTO some_table ([Col1]) VALUES (@count) 
    SET @count = (@count + 1) 
END 

MySQL命令:

BEGIN 
    DECLARE @count INT; 
    SET @count = 1; 

    WHILE (@count < 13001) 
    INSERT INTO 'some_table' ('col1') VALUES (@count); 
    SET @count = (@count + 1); 
    END WHILE; 
END; 
+0

我認爲這是我最好的選擇。但是,我如何將其包含在PHP腳本中?或者這是一個直接的SQL命令? – Pierre

+0

這是一個將針對數據庫執行的SQL命令/查詢。 – DarkEthics

+0

我在SQL命令中運行查詢時出現以下錯誤: – Pierre

0

你需要指定的信息源。

每個平臺都有自己的做法。

例如,微軟有他們的集成服務。但是,如果它是簡單的數據,那麼您可以創建一個正則表達式替換,將數據封裝到插入表中的多個選擇查詢中。

但我需要更多地瞭解哪些數據庫和信息源來幫助你了。

+0

我正在使用mysql作爲數據庫。 – Pierre

+0

也許我在做很多假設,但我的猜測是數據(13k)不在其他表中的數據庫中?那麼你的數據來源是什麼?一個excel文件? – NeutronCode

+0

不,數據需要同時創建。謝謝 – Pierre

1

加載數據的最快捷的方式進入MySQL是從本地分隔的文件加載它。 MySQL有一個load local infile命令可以做到這一點:

LOAD DATA INFILE '/tmp/data.csv' INTO TABLE mytable 
FIELDS TERMINATED BY '|' 
LINES TERMINATED BY '\n' (Col1); 

當你輸入文件只是一個Col1中的值列表,每行一個:

8377 
3888 
3244 
...