2016-04-27 2 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 и предваряя операторы вставки? – jleviaguirre

+0

У вас есть пример? Считаете ли вы, что это будет быстрее? – flux

+0

Вы можете использовать информационные ссылки для записи в базу данных, если это то, что вы пытаетесь сделать. Просто создайте оператор обновления с помощью кнопки SQL в разделе «Предварительные обновления» или «После обновления». Убедитесь, что вы вернули что-то обратно в Spotfie, используя опцию «Запрос». Радиокнопки вводят в заблуждение. Они должны быть вкладками, потому что вы можете подумать, что он выполнит один или ох, но не все. Пример: update dev.myTable set status =? status, comment_text =? comment, USERNAME = '% CURRENT_USER%', где itemId in (? 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() 
Смежные вопросы