2011-06-09 120 views
5

我想運行查詢並將結果另存爲製表符分隔文件。這一切都沒有問題,但在:sql server 2005 - 導出nvarchar(max)數據

查詢 - >查詢選項 - >結果 - >正文 - >中的每一列

的最大字符數我只能選擇8192個字符爲最大。這可能還不夠。如果列是nvarchar(max),是否有辦法確保包含所有字符?

謝謝!

基督教

回答

5

右鍵單擊Management Studio中的數據庫,Tasks => Export Data。 將目標設置爲「平面文件目標」,然後選擇編寫要導出的查詢。

+0

這似乎是乍一看最簡單的選擇。我如何在這裏指定目標文件?謝謝。 – cs0815 2011-06-09 12:11:52

+0

選擇數據源後點擊下一步。在目標下拉列表中,選擇「平面文件目標」,然後可以選擇文件名稱和位置。 – Magnus 2011-06-09 12:14:47

3

我通常使用Powershell這種東西。

這是一個腳本,隨時爲您調整需要。我假設你的nvarchar(max)沒有換行符,否則tab分隔的文件沒有多大意義。

##---[ Script Settings ]------------------------------------------------------------------------------------------------------------- 
$sqlServer = "localhost" 
$targetDbName = "AdventureWorks2008" 
$reportName = "c:\result.txt" 

##---[ Common Functions ]------------------------------------------------------------------------------------------------------------ 
function Get-Dataset { 
param($sqlQuery, $sqlServer, $sqlCatalog) 

    # Setup SQL Connection 
    $sqlConnection = New-Object System.Data.SqlClient.SqlConnection 
    $sqlConnection.ConnectionString = "Server = $sqlServer; Database = $sqlCatalog; Integrated Security = True" 

    # Setup SQL Command 
    $sqlCmd = New-Object System.Data.SqlClient.SqlCommand 
    $sqlCmd.CommandText = $sqlQuery 
    $sqlCmd.Connection = $sqlConnection 
    $sqlCmd.CommandTimeout = 0 

    # Setup .NET SQLAdapter to execute and fill .NET Dataset 
    $sqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter 
    $sqlAdapter.SelectCommand = $sqlCmd 
    $dataSet = New-Object System.Data.DataSet 

    #Execute and Get Row Count 
    $nRecs = $sqlAdapter.Fill($dataSet) 
    $sqlConnection.Close(); 
    $dataSet 
} 

##---[ Main ]------------------------------------------------------------------------------------------------------------------------ 

$dataset = Get-DataSet "SELECT * From DatabaseLog" $sqlServer $targetDbName 

$dataset.tables[0].rows | 
    #Format-Table -auto | Out-File $reportName -width 100000 
    ConvertTo-CSV -Delimiter "`t" -NoTypeInformation| Out-File $reportName 

& ($reportName)