2011-06-09 123 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)