こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

フォルダ内複数ファイルのテキストファイルの取り込みについて

SQL Standard2005を使用しています。

あるフォルダに複数のファイルがありますが、そのフォルダ内すべてのファイルをSQLにインポートしたいと考えています。

ただ、インポート元のデータですが、フォルダ名は固定なのですが、ファイル名・ファイル数ともに毎回変わります。

インポート先のテーブル名は固定です。

BCPやBULKINSERTに関していろいろ自分なりに調べたつもりなのですが適当な方法が見当たりませんでした。

どなたかご存知の方は教えていただきたいです。
よろしくお願いします。

投稿日時 - 2008-12-16 14:38:02

QNo.4560155

困ってます

質問者が選んだベストアンサー

xp_cmdshellの使用を許可して(or許可してもらって)、処理するのが一番楽でしょうね。
ファイルはDBサーバにあるのが条件です。サンプルを示しますので、使えそうなら調べてみてください。

DECLARE @PATH varchar(300)
SET @PATH='C:\データパス'

DECLARE @CMD varchar(300)
DECLARE @FILE varchar(max)
DECLARE @sql varchar(max)

CREATE TABLE #FILELIST ([DATA][varchar](max))
SET @CMD='DIR /B /S '+@PATH

INSERT INTO #FILELIST
EXEC xp_cmdshell @CMD

DECLARE F_CUR CURSOR LOCAL FOR
SELECT * FROM #FILELIST WHERE DATA LIKE '%.csv'
OPEN F_CUR
FETCH NEXT FROM F_CUR INTO @FILE
WHILE (@@FETCH_STATUS=0)
BEGIN
SET @sql = 'BULK INSERT Import先テーブル FROM '''+@FILE+''''
+' WITH (FIELDTERMINATOR ='','', ROWTERMINATOR =''\n'')'

EXEC (@sql)
FETCH NEXT FROM F_CUR INTO @FILE
END
CLOSE F_CUR
DEALLOCATE F_CUR

DROP TABLE #FILELIST

投稿日時 - 2008-12-16 15:19:41

お礼

丁寧にご回答いただきありがとうございました。
xp_cmdshellの使用の許可及びコードについて無知ですの調べながら試してみます。

投稿日時 - 2008-12-17 11:18:53

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

許可の方法についての補足ですが、SQL Server 2005には「SQL Serverのセキュリティ構成」というメニューが別にあるので、そこで「xp_cmdshellを有効にする」にチェックを入れてください。

投稿日時 - 2008-12-17 12:35:04

お礼

なんとかできました。ありがとうございました。

投稿日時 - 2008-12-19 11:49:07

あなたにオススメの質問