- - PR -
SQLServer7、Transact-SQLでテキストファイルの読書&移動方法
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-11-10 10:00
Transact-SQLで、テキストファイルの読書&フォルダ移動をしたいのですが。
ActiveXDLLとの連携でもできそうですが、Transact-SQLのみで できないでしょうか? | ||||||||
|
投稿日時: 2005-11-10 10:43
らいと申します。
書かれていることの実装として考えられるのは、 【テキストの読み書き】 ・DTSの追加 ⇒DBへの読み込み/書き込み用 計2本 ・DTS実行用ストアド ⇒master..xp_cmdshell 'dtsrun 〜' 【フォルダ移動】 ・フォルダコピー(移動?)用ストアド ⇒master..xp_cmdshell 'copy(move) 〜' くらいですかね。 テキストファイル読み込み用のテーブルを作成して処理させる方法ですが。 [修正] DTS実行用の命令は、bcpじゃなくてdtsrunだよ...。orz バックアップのソースを書きながらだったから、失敗しちまったい。 [/修正] _________________ 一寸先は闇 安定してるシステムって言ったじゃん(泣) [ メッセージ編集済み 編集者: らい 編集日時 2005-11-10 10:47 ] | ||||||||
|
投稿日時: 2005-11-10 13:32
返信ありがとうございます。
⇒DBへの読み込み ですが、ファイル名が分からないので、単純に読込みできないように思います。 (ファイルが1フォルダに複数ある。ファイル名は不明) この場合、 アクティブ スクリプト タスクというのを使ってファイル名を取得しないと いけないんでしょうか? アクティブ スクリプト タスクで「DBへの読み込み」は可能でしょうか? | ||||||||
|
投稿日時: 2005-11-10 15:05
らいです。
ち、ちょっとまった。(汗 とりあえず、前提条件があるなら全部書いてみてもらえます? あと、そのファイル名に規則性ってあります? たとえば、hoge200511101456.txtみたいな。 (上の例は、規則文字列+日付+時刻の例です。) 規則性があって、なおかつ終了時にどっかに移動するのであれば、 そのファイルを一意性のファイル名でコピーして、それをDTSで読み込むようにすれば いけれるんじゃないかと思ったので。 たとえば、 hoge200511101456.txt ↓ hogehoge.txtとしてコピー (このときに一緒にバックアップしてもいいかな?) ↓ DTSで取り込み ってな感じで。
えと、アクティブスクリプトタスクって何? 何かわからないので、DBへの読み込みができるかわかりません。 _________________ 一寸先は闇 安定してるシステムって言ったじゃん(泣) | ||||||||
|
投稿日時: 2005-11-10 15:26
すみません。
そもそものお話になってしまいますが、 SQLでファイルの読み書きをしたいとか ファイルの移動をしたい理由って何でしょうか? | ||||||||
|
投稿日時: 2005-11-10 16:08
返信ありがとうございます。
>そのファイルを一意性のファイル名でコピーして、 コピーはどうやればいいですか? 一意性は無いと考えた方がいいです。 知っている限りの仕様 @SQLサーバーのPCのあるフォルダにiniファイルに近い形式のデータが入ってくる ファイル名は不明。一定間隔でフォルダの中身を見に行く予定 Aそのデータを解析、「A=100Z」とかなら、これこれは100Zですね、と判断 B解析したデータを、マスタで引き当てして適宜コンバート CコンバートしたデータをDBに上げる D読み込んだiniファイルもどきは..\oldに移動し、2回読み込まないようにする E@へもどる こんな感じですが・・・ >えと、アクティブスクリプトタスクって何? VBAみたいなやつです。ちなみにぼくは今日、初めて見てます。 VBAだから Set fso = CreateObject("Scripting.FileSystemObject") で、ファイルの取得ぐらいはできるんじゃないかと思ったんですが、 抜き取ったテキストをどうやってストアドに上げるのかどうか・・・ VB6などは使わない予定です。 | ||||||||
|
投稿日時: 2005-11-10 16:18
3,4はSQL発行などDBへの操作が必要そうに思えますが、 そのほかの部分はWSHなどで対応するっていうのは駄目でしょうか? たとえば WSHからosqlなどでSQL発行をし、データの読み書きをして ファイルの読み書きはWSHなどで・・・と思ったんですが。 Scr.002 逆引きWSH(VBScript)サンプル集 osqlユーティリティ [ メッセージ編集済み 編集者: 夏椰【SUICA】 編集日時 2005-11-10 16:18 ] | ||||||||
|
投稿日時: 2005-11-10 17:34
らいです。
うっわ、めっちゃステキな仕様ですねぇ。 つーことで2点ほど確認。 1.ファイルが作成される(受信する?)のも一定間隔? また、その検知はどうやるの? >随時監視じゃないよね?ってこと。 2.「あるフォルダ」にはまだ読み込まれていないファイルのみ存在する? あと、疑問に思ったこと。 1.ファイル名は「絶対に」重複しないのか。 >いや、重複したらアウトだな、と。 2.随時監視ってことだと、CPUに負担をかなり強いますが、その辺の確認はOK? 3.リカバリについては、どのように考えているか。 >どー考えても、リカバリしにくそうなシステムになるなぁ、と。
VBAみたいなものってことは、VBAではないってことでOK? ちとキツいなぁ。 仕様もわからないので、こちらでの助言はパス。 で、結構できるかもよ?T-SQLのみで。 ちとめんどくさいけどね。 ヒントとしては、 「ファイルのコピー」「タスクマネージャ」「master..xp_cmdshell」「Dirコマンド」「Deleteコマンド」 こんなところでしょうか。 方法は、自宅に帰った後に書き込みます。 さすがに、仕事場でこれ以上は書き込めない…。(笑) _________________ 一寸先は闇 安定してるシステムって言ったじゃん(泣) | ||||||||
