2011-06-09 33 views
5

Me gustaría ejecutar una consulta y guardar los resultados como un archivo separado por tabuladores. Todo esto es ningún problema, pero en:sql server 2005 - exportar datos nvarchar (max)

Consulta -> Opciones de consulta -> Resultados -> Texto -> Número máximo de caracteres en cada columna

que sólo puede seleccionar 8192 caracteres como máximo. Esto puede no ser suficiente. ¿Hay alguna forma de garantizar que todos los caracteres estén incluidos si la columna es nvarchar (max)?

Gracias!

Cristiano

Respuesta

5

Haga clic con el botón derecho en la base de datos en Management studio, Tasks => Exportar datos. Establezca el destino en un "Destino de archivo plano" y luego elija escribir la consulta para exportar.

+0

Esta parece ser la opción más fácil a primera vista. ¿cómo especifico el archivo de destino aquí? Gracias. – cs0815

+0

Después de haber seleccionado la fuente de datos, haga clic en siguiente. En el menú desplegable de destino, seleccione "Destino de archivo plano" y luego puede elegir un nombre de archivo y ubicación. – Magnus

3

I ususally uso Powershell para este tipo de cosas.

Aquí hay una secuencia de comandos, siéntase libre de ajustar para sus necesidades. Supongo que su nvarchar (max) no tiene saltos de línea, de lo contrario, el archivo separado por tabuladores no tiene mucho sentido.

##---[ 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) 
Cuestiones relacionadas