- ベストアンサー
フォルダ内複数ファイルのテキストファイルの取り込みについて
SQL Standard2005を使用しています。 あるフォルダに複数のファイルがありますが、そのフォルダ内すべてのファイルをSQLにインポートしたいと考えています。 ただ、インポート元のデータですが、フォルダ名は固定なのですが、ファイル名・ファイル数ともに毎回変わります。 インポート先のテーブル名は固定です。 BCPやBULKINSERTに関していろいろ自分なりに調べたつもりなのですが適当な方法が見当たりませんでした。 どなたかご存知の方は教えていただきたいです。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
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
その他の回答 (1)
- jamshid6
- ベストアンサー率88% (591/669)
許可の方法についての補足ですが、SQL Server 2005には「SQL Serverのセキュリティ構成」というメニューが別にあるので、そこで「xp_cmdshellを有効にする」にチェックを入れてください。
お礼
なんとかできました。ありがとうございました。
お礼
丁寧にご回答いただきありがとうございました。 xp_cmdshellの使用の許可及びコードについて無知ですの調べながら試してみます。