C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: SQLSERVER BULK INSERT


(過去ログ 63 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■36270 / inTopicNo.1)  SQLSERVER BULK INSERT
  
□投稿者/ ぱんだまん (3回)-(2009/05/26(Tue) 15:36:12)

分類:[データベース全般] 

よろしくお願い致します。

BULK INSERT HOGE FROM 変数
という形はできなのでしょうか?
VBから引数を渡して処理を行いたいのですが。
引用返信 編集キー/
■36271 / inTopicNo.2)  Re[1]: SQLSERVER BULK INSERT
□投稿者/ オショウ (197回)-(2009/05/26(Tue) 15:42:47)
2009/05/26(Tue) 15:43:14 編集(投稿者)

> BULK INSERT HOGE FROM 変数
> という形はできなのでしょうか?

  ヘルプに載ってますが・・・
  T-SQLの文法では
  http://msdn.microsoft.com/ja-jp/library/ms188365.aspx

> VBから引数を渡して処理を行いたいのですが。

  T-SQL なら、VBから渡して実行できます。

以上。
引用返信 編集キー/
■36272 / inTopicNo.3)  Re[2]: SQLSERVER BULK INSERT
□投稿者/ ぱんだまん (4回)-(2009/05/26(Tue) 15:47:30)

BULK INSERT HOGE FROM 'C:\HOGE.CSV'
ではなく。

実行出来ませんが。

DECLARE @PATH PATH ='C:\HOGE.CSV'
--VBからの引数。

BULK INSERT HOGE FROM @PATH
のように行いたいのですが・・・・・

可能でしょうか・・・?
HELPを見た限り発見できませんでした・・・
引用返信 編集キー/
■36273 / inTopicNo.4)  Re[3]: SQLSERVER BULK INSERT
□投稿者/ みきぬ (442回)-(2009/05/26(Tue) 16:04:46)
「bulk insert 変数」でぐぐったらこんなのを見つけたので貼っておきますね。
古いスレッドなので、役に立つかどうかわかりませんが…。

http://oshiete1.goo.ne.jp/qa262720.html
引用返信 編集キー/
■36274 / inTopicNo.5)  Re[1]: SQLSERVER BULK INSERT
□投稿者/ はつね (1014回)-(2009/05/26(Tue) 16:05:55)
はつね さんの Web サイト
No36270 (ぱんだまん さん) に返信
> BULK INSERT HOGE FROM 変数
> という形はできなのでしょうか?
> VBから引数を渡して処理を行いたいのですが。

VB側に値をもっていてそれを引数として渡したいということでしょうか?
BLUK INSERTの文字列組み立てたときにその値を使って組み立てないのには何か意味があるんのでしょうか?


> BULK INSERT HOGE FROM @PATH
> のように行いたいのですが・・・・・

これは無理ですね。
↓T-SQLの中でこんな感じでVB側で文字列として組み立てるかT-SQL側で組み立てるかの違いだけかと。

DECLARE @SQL AS VARCHAR(250)
@SQL = 'BULK INSERT HOGE FROM ' + @PATH
EXEC(@SQL)


引用返信 編集キー/
■36275 / inTopicNo.6)  Re[3]: SQLSERVER BULK INSERT
□投稿者/ ふるふる (27回)-(2009/05/26(Tue) 16:15:06)
No36272 (ぱんだまん さん) に返信
>
> BULK INSERT HOGE FROM 'C:\HOGE.CSV'
> ではなく。
>
> 実行出来ませんが。
>
> DECLARE @PATH PATH ='C:\HOGE.CSV'
> --VBからの引数。
>
> BULK INSERT HOGE FROM @PATH
> のように行いたいのですが・・・・・
>
> 可能でしょうか・・・?
> HELPを見た限り発見できませんでした・・・

プロシージャを用意して、プロシージャの中でBULK Insertの文字列を作って、そのプロシージャを呼び出す。
プロシージャの引数(@PATH)にVBから文字列を渡してあげれば、プロシージャ内でBULK InsertのSQL文字列を作り、
sp_execresultset で実行させればいいかと。

引用返信 編集キー/
■36276 / inTopicNo.7)  Re[4]: SQLSERVER BULK INSERT
□投稿者/ ぱんだまん (5回)-(2009/05/26(Tue) 16:18:56)
ありがとう御座います。
このようなやり方があるとは思いつきもしませんでした。

本当にありがとうございました。
解決済み
引用返信 編集キー/
■36368 / inTopicNo.8)  Re[5]: SQLSERVER BULK INSERT
□投稿者/ ちゃっぴ (239回)-(2009/05/27(Wed) 23:34:57)
ちゃっぴ さんの Web サイト
解決した後でなんですが、気になったので。

> DECLARE @SQL AS VARCHAR(250)
> @SQL = 'BULK INSERT HOGE FROM ' + @PATH
> EXEC(@SQL)

QUOTENAME とかを使った方がいいですね。
ただ、今回は対象が file path なので QUOTENAME で扱える
sysname (= nvarchar(128)) では足りなそうです。

ということで、quote してやる処理組み込みましょう。

CREATE PROCEDURE [dbo].[BulkInsertSample]
@PATH nvarchar(260)
AS
DECLARE @SQL AS nvarchar(520)
SET @SQL = 'BULK INSERT [HOGE] FROM '
+ 'N''' + REPLACE(@PATH, N'''', N'''''') + ''''
EXECUTE sp_executesql @SQL
GO
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -