2017-08-14 76 views
0

因爲我不想做100插入腳本,所以我嘗試創建一個插入數組。循環完成後,只插入一個查詢。 (我使用的是PHP) 我正在循環一些數據庫操作,做一些計算等,並生成插入腳本。這個陣列的輸出是這樣的:使用插入腳本數組插入到sql

$this->insert_array 

[0] -> INSERT INTO tbl_electricty (fld_value, fld_active) VALUES ('1', true) 
[1] -> INSERT INTO tbl_electricty (fld_value, fld_active) VALUES ('2', false) 
[2] -> INSERT INTO tbl_electricty (fld_value, fld_active, fld_model) VALUES ('1', false, 'Powys') 
.... 
.... 
[99] -> INSERT INTO tbl_electricty (fld_value, fld_active) VALUES ('7521', true) 

如何將這些元素合併到一個大的插入腳本?

+0

@坦納感謝您的警告,我用sql-server標記 – FreshPro

回答

0

而不是創建它作爲數組,如下

INSERT INTO tbl_electricty (fld_value, fld_active) VALUES ('7521', true),('7522', true),('7523', true),('7524', true)............,('7621', true); 

然後運行查詢創建它。

2

您可以使用您的數組填充臨時表,然後在表準備就緒後將臨時表的結果插入到目標中。一個樣本(純SQL)看起來像這樣:

CREATE TABLE #temp (value INT, active BIT, model NVARCHAR(10)); 

INSERT INTO #temp(value, active, model) 
VALUES 
(1, 1, ''), 
(2, 0, ''), 
(1, 0, 'Powys'); 

CREATE TABLE #destination (value INT, active BIT, model NVARCHAR(10)); 

INSERT INTO #destination(value, active, model) 
SELECT t.value, t.active, t.model 
FROM #temp AS t; 

SELECT * 
FROM #destination; 

DROP TABLE #temp; 
DROP TABLE #destination;