在 SQLCMD 模式下格式化输出? [英] Formatting output in SQLCMD mode?
本文介绍了在 SQLCMD 模式下格式化输出?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有没有办法可以在SQLCMD 模式 中指定输出文件格式,以便我可以使用BULK INSERT
读回它?我想做这样的事情:
Is there a way I can specify output file format in SQLCMD mode so that I can read it back using BULK INSERT
? I want to do something like this:
:CONNECT SERVER1
:OUT 'E:\test'
SELECT TOP 100 ID, NAME
FROM DB1.dbo.TABLE1
GO
:CONNECT SERVER2
:OUT 'E:\test2'
CREATE TABLE #TEMP(ID INT, NAME VARCHAR(100))
BULK
INSERT #TEMP
FROM 'E:\test'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
GO
SELECT *
FROM DB2.dbo.TABLE2
WHERE ID IN (SELECT ID FROM #TEMP)
-- Other queries for #TEMP
GO
推荐答案
以某种程度的自动化方式批量插入数据的一种方法是使用中间表.
One way to get the data bulk inserted in a somewhat automated fashion is to use an intermediate table.
(使用您的原始场景)
:CONNECT SERVER1
:OUT 'E:\test'
SELECT TOP 100 '^'+cast(ID as varchar(16))+'^^'+NAME
FROM DB1.dbo.TABLE1
GO
:CONNECT SERVER2
:OUT 'E:\test2'
CREATE TABLE #TEMP1(BOTHCOLUMNS VARCHAR(116))
BULK
INSERT #TEMP1
FROM 'E:\test'
GO
CREATE TABLE #TEMP2(ID INT, NAME VARCHAR(100))
INSERT #TEMP2
SELECT
Substring(BOTHCOLUMNS, 2, Patindex('%^^%', BOTHCOLUMNS) - 2),
Substring(BOTHCOLUMNS, Patindex('%^^%', BOTHCOLUMNS) + 2,
Len(BOTHCOLUMNS) - Patindex('%^^%', BOTHCOLUMNS) - 1)
FROM #TEMP1
WHERE Patindex('%^^%', BOTHCOLUMNS) > 1
SELECT t2.*
FROM DB2.dbo.TABLE2 t2
JOIN #TEMP2 tmp2 on tmp2.ID=t2.ID
-- Other queries for #TEMP
GO
这篇关于在 SQLCMD 模式下格式化输出?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文