如何使用特定選擇查詢生成一些插入sql語句。 Sql Server 2008中是否有任何工具?要不然?從sql選擇語句中生成多個sql插入
回答
像這樣的東西會產生一個INSERT語句列表。然後,您從輸出中複製並粘貼並運行INSERT。這遠非理想,但它有效。
SELECT 'INSERT table (col1, col2)
VALUES (''' + stringcolumn + ''', ' + CAST(intcolumn AS varchar) + ')'
FROM sourcetable
這不會處理空值,並且引號不會被正確地轉義:''''' – 2010-04-27 13:13:26
引號**正確地被轉義,但是,它不會處理空值 - 它很快並沒有全面的例子。 – 2010-04-27 13:28:13
示例: SELECT'INSERT WFDocTypeField(WFDocTypeID,TableName,FieldName,DMSFieldName) VALUES('+ COALESCE(CONVERT(varchar(30),WFDocTypeID),'null')+','''+ CAST(TableName AS varchar )+ '' ' ''' + CAST(字段名AS VARCHAR)+ '' ' ''' + CAST(DMSFieldName AS VARCHAR)+ '' ')' FROM WFDocTypeField(NOLOCK) WHERE WFDocTypeID = 852 Thanx @David和@KM – theklc 2010-04-27 13:35:39
你的意思是這樣嗎?
SELECT
'INSERT INTO MyTable (Col1, Col2, Col3) VALUES (' + Col1 + ', ' + Col2 + ', ' + Col3 + ')'
FROM
MyTable
當然,你將需要封裝在引號某些領域,執行一些字符逃逸,將數字轉換成VARCHAR處理等
注意空值和數據類型轉換(SQL Server語法):
SELECT
'INSERT INTO YourTable (Col_int, Col_datetime, Col_varchar) VALUES ('
+COALESCE(CONVERT(varchar(30),Col_int),'null')
+','+COALESCE(''''+CONVERT(char(23),Col_datetime,121)+'''','null')
+','+COALESCE(''''+Col_varchar+'''','null')
+')'
FROM YourTable
WHERE ...
爲什麼你想要一行一行地做?當您可以將它們全部插入到一個查詢中時,這是一項非常糟糕的技術。數據庫旨在比逐行操作更快地執行集合操作。
insert table1 (field1, field2)
Select Field1, Field2 from Table2 where field3 >10
用於創建將在新數據庫上執行插入的腳本 – CRice 2010-10-29 01:11:27
- 1. 插入語句的SQL生成
- 2. SQL SERVER插入使用插入多行到選擇語句
- 3. 從SQL語句生成NSDictionary
- 4. 在sql中選擇語句在sql中選擇語句
- 5. SQL語句選擇語句
- 6. 多選擇在一個SQL語句
- 7. 加入兩個選擇語句SQL
- 8. 選擇SQL語句
- 9. sql語句選擇
- 10. SQL插入語句
- 11. 在T-SQL語句中從衆多中選擇一個變量
- 12. 在case語句中選擇語句sql
- 13. 加入多個sql語句
- 14. sql插入語句語法
- 15. SQL - 插入從選擇
- 16. 範圍SQL使用語句和插入進入選擇的
- 17. 遞歸生成sql語句
- 18. SQL SERVER 2008:嘗試使用1個SQL語句插入多行
- 19. SQL選擇語句過濾
- 20. sql複雜選擇語句
- 21. SQL Select子選擇語句
- 22. SQL條件選擇語句
- 23. SQL嵌套選擇語句
- 24. 選擇SQL語句比較
- 25. SQL語句選擇行
- 26. SQL選擇case語句
- 27. SQL插入C語句#
- 28. SQL Server插入語句
- 29. 未插入SQL語句
- 30. Cakephp插入sql語句
請說明你正在嘗試做的...不知道你是什麼意思「一些插入SQL語句」下 - 粘貼一個例子 – IMHO 2010-04-27 12:55:33
@Matthew藤,@馬克拜爾斯沒有我不是說這兩個答案下面; 我告訴「生成」,所以我會郵寄給我的朋友,他在他的服務器上運行相同的數據庫.. – theklc 2010-04-27 12:56:56
@IMHO 有一張表; SELECT * FROM X_TABLE WHERE X_CLASS ='A' 它返回81行。 所以想象那81行,我需要一個工具來生成81行插入句子,將它們插入數據庫。 PS:我以前用EXCEL的CONCANATE功能來做,但是這次有很多行..所以需要一個工具.. – theklc 2010-04-27 12:59:29