質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

Q&A

解決済

1回答

1988閲覧

変数に入れた値をCSVで出力したい

x-ryo

総合スコア14

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

0グッド

0クリップ

投稿2018/02/10 03:16

SQLSERVER で カーソルを使用して2つのテーブルを比較し、比較した結果をCSVに出力したいです。
print @kekka の部分をcsvとして、ということは可能なのでしょうか?

declare @A_name as nchar(10), @A_weight as int, @B_name as nchar(10), @B_weight as int, @kekka as nvarchar(max)=''; declare cursor_A cursor for select A_name,A_weight from A_TABLE open cursor_A fetch next from cursor_A into @A_name,@A_weight while @@fetch_status=0 begin declare cursor_B cursor for select B_name,B_weight from B_TABEL open cursor_B fetch next from cursor_B into @B_name,@B_weight while @@fetch_status=0 begin if @A_name = @B_name and @A_weight <> @B_weight set @kekka =@kekka + @A_name + ',' + @A_weight + CHAR(13); fetch next from cursor_B into @B_name,@B_weight end close cursor_B deallocate cursor_B fetch next from cursor_A into @A_name,@A_weight end close cursor_A deallocate cursor_A print @kekka

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

SQL Server にはファイル出力のコマンド-ステートメントはありません。
xp_cmdshell で DOSコマンドが使えますがセキュリティ上色々面倒なのでお勧めできません。
テーブル値を返すストアドプロシージャを書いて、その出力をbcpユーティリティなどを使ってCSVファイルにすることをお勧めします。

投稿2018/02/10 03:47

hihijiji

総合スコア4150

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

x-ryo

2018/02/10 09:08

ありがとうございます。 ちなみに、夜間のある時間に実行し、結果をcsv出力する。朝に結果が保存されているというのが目的なのですが、実現可能でしょうか?
x-ryo

2018/02/11 08:56

なんどもすいません。 行き詰まっております。 bcpで保存されているDBを出力はできたのですが、 テーブル変数に入ったのを出力はどうするのですか。 申し訳ありません。 declare @A_name as nchar(10),  @A_weight as int,   @B_name as nchar(10),   @B_weight as int, declare @NewTable table( A_name nchar(10), A_weight int ); declare cursor_A cursor for select A_name,A_weight from A_TABLE open cursor_A fetch next from cursor_A into @A_name,@A_weight while @@fetch_status=0 begin declare cursor_B cursor for select B_name,B_weight from B_TABEL open cursor_B fetch next from cursor_B into @B_name,@B_weight while @@fetch_status=0 begin if @A_name = @B_name and @A_weight <> @B_weight insert into @NewTable values (@A_name,@A_weight) fetch next from cursor_B into @B_name,@B_weight end close cursor_B deallocate cursor_B fetch next from cursor_A into @A_name,@A_weight end close cursor_A deallocate cursor_A ------------------------------------------------------------------------------ DECLARE @BCPSTR varchar(100) SET @BCPSTR='bcp @NewTable out C:\Temp\kekka.txt -c -S ○○○ -T' EXECUTE master..xp_cmdshell @BCPSTR
x-ryo

2018/02/12 00:47

テーブル値関数を使ってbcpで利用したら成功しました。 ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問