2011-08-02 7 views
0

私は本質的に同じthisの質問を見ましたが、OPは「他のツールを使用して」回答として受け入れました。基本的には、テーブルからデリミタ付きファイルにデータをエクスポートしようとしていますが、8192文字制限のために、出力テキストが切り捨てられています。私は(少なくとも私のために)働く良いアプローチを見つけることができませんでした。8192ファイルへのエクスポート中にテキスト列に制限がありますか?

SSMSsqlcmd(制限がこれに当てはまるかどうかわかりません。私は現時点で挑戦しています)が私の唯一の選択肢です。この制限を回避し、より高い幅のテキスト列をダンプする方法はありますか?

答えて

2

シンプルなPowerShellスクリプトやC#を使用したコマンドラインアプリを使用したことはありますか?可能であれば、SELECTすべてのデータは、ファイルにすべて書き込むことができるはずです。

EDIT 2011-08-03

私はPowerShellのか、sqlcmdので、この作業を取得することができませんでした。前者は4000文字、後者は256文字に切り捨てているようだが、私の親友であるVBScriptは、新しく輝くことが常にベストではないことをもう一度証明した。コードは書くのがはるかに面倒だが、機能する。 .vbsファイルとして保存し、行2,3、および6に適切な変更を加えます(さらに列、データの変換、異なる区切り文字などが必要な場合は9)。

set conn = createobject("ADODB.Connection") 
conn.open "provider=SQLOLEDB.1;data source=.;user id=user;password=pass;" 
set rs = conn.execute("SELECT VarcharMaxCol FROM dbo.TableName") 

set fso = createobject("Scripting.FileSystemObject") 
set f = fso.CreateTextFile("c:\path\from_vbs.csv", true) 

do while not rs.eof 
    f.writeline vbCrLf & rs(0) 
    rs.movenext 
loop 

rs.close : set rs = nothing 
conn.close : set conn = nothing 
f.close : set f = nothing 
set fso = nothing 

私のPowerShellの教祖の友達から> 4Kの扱いについて回答が得られたら、ここに投稿します。

+0

+1 - Powershellはおそらくこれを行う方法です。 – JNK

+0

+1ありがとうございます。私はこれを解決策として受け入れましたが、PowerShellスクリプトを使って何を意味するのかを教えてください。テーブル全体が非常に大きいので、私がやっているのは '#TEMP'テーブルにいくつかの数値を作成し、それらを元のテーブルに結びつけて結果セットを得ることです。 – Legend

+0

@Legend私はVBScriptで動作するソリューションで答えを更新しました(私は知っていますが、* shudder *)。 –

関連する問題