2016-04-27 32 views
0

SQL服務器寫入腳本寫入數據庫:最快的方式從腳本

sqlCommand = "INSERT INTO ... 

ds = DatabaseDataSource(DatabaseDataSourceSettings("System.Data.SqlClient","Server=xxx;Database=xxx;UID=xxx;PWD=xxx",sqlCommand)) 

#execute by creating a temp table with db source, then drop table 
newDataTable = Document.Data.Tables.Add("temp",ds) 
Document.Data.Tables.Remove(newDataTable) 

但是存在這種方法稍有延遲。有沒有可能做到這一點,而不創建一個臨時表?

+0

你有沒有考慮使用參數化信息的鏈接通過修改原來的SQL和前面加上insert語句? – jleviaguirre

+0

簡單地說你有一個例子嗎?你認爲這會更快嗎? – flux

+0

如果這是您正在嘗試執行的操作,則可以使用信息鏈接來回寫數據庫。只需使用Pre-Updates或Post-Updates下的SQL按鈕創建更新語句即可。確保使用查詢選項返回Spotfie。單選按鈕有誤導性。他們應該是標籤,因爲你可能認爲它會執行一個或更多,但不是全部。例如:更新dev.myTable set status =?status,comment_text =?comment,USERNAME ='%CURRENT_USER%'其中itemId位於(?selectedIds)中並在參數部分設置參數(如果有的話) – jleviaguirre

回答

0

想到我從很久以前就回答了我自己的問題。這是可能避免的Spotfire庫和使用.NET System.Data.SqlClient的一個更快的執行這個簡單的腳本:

import clr, datetime 
clr.AddReference('System.Data') 
from System.Data import SqlClient 
from System import Threading, DateTime 

sql = "INSERT INTO ...." 

conn = SqlClient.SqlConnection("Server=;Database=;UID=;PWD=") 
conn.Open() 

cmd = SqlClient.SqlCommand(sql, conn) 
exe = cmd.ExecuteReader() 

exe.Close() 
conn.Close()