質問するログイン新規登録

質問編集履歴

6

書式の改善

2020/10/08 01:38

投稿

narito
narito

スコア0

title CHANGED
File without changes
body CHANGED
@@ -1,4 +1,4 @@
1
- ### 前提・実現したいこと
1
+ # 前提・実現したいこと
2
2
  シェルスクリプトを使用してファイルサーバーとDBサーバーの整合性の確認ツールを作成しております。
3
3
  ・ファイルのパス一覧csvをファイルサーバーより取得
4
4
  ・取得したcsvファイルをシェルスクリプトのwhilereadで1行づつ読み出しsqlの引数に渡し、sqlでDBのSELECTを行う
@@ -6,23 +6,26 @@
6
6
 
7
7
  「.」付きの値を渡す方法はあるのでしょうか。
8
8
 
9
- エラーメッセージ
9
+ #エラーメッセージ
10
+ ```
10
11
  path = 123456789.pdf
11
12
  *
12
13
  ERROR at line 6:
13
14
  ORA-00933: SQL command not properly ended
14
-
15
+ ```
15
- 現在行った対応
16
+ #現在行った対応
16
17
  ・引数で渡すファイルの「.」の前に¥を配置し、sql側でSET ESCAPE ¥ を記載
17
18
  ・sql側でSET BLOCKTERMINATOR OFF
18
19
 
19
-
20
+ #ファイル内容
20
21
  ・fileList.csv ※イメージ
22
+ ```
21
23
  1111 /***/***/***/123456789.pdf
22
24
  1111 /***/***/***/234567890.pdf
25
+ ```
23
26
 
24
-
25
27
  ・check.sh
28
+ ```
26
29
  #!/bin/bash
27
30
  readonly SQLNAME="check.sql"
28
31
  cat fileList.csv | while read line
@@ -36,8 +39,9 @@
36
39
  EOF
37
40
  fi
38
41
  done
39
-
42
+ ```
40
43
  ・check.sql
44
+ ```
41
45
  SET LINESIZE 10000
42
46
  SET PAGESIZE 0
43
47
  SET FEEDBACK OFF
@@ -47,6 +51,8 @@
47
51
  select path from target where filename = &1;
48
52
  EXIT;
49
53
  /
50
-
54
+ ```
51
55
  ・実行コマンド
56
+ ```
52
- sh check.sh
57
+ sh check.sh
58
+ ```

5

2020/10/08 01:38

投稿

narito
narito

スコア0

title CHANGED
File without changes
body CHANGED
File without changes

4

2020/10/06 11:44

投稿

narito
narito

スコア0

title CHANGED
File without changes
body CHANGED
@@ -18,8 +18,8 @@
18
18
 
19
19
 
20
20
  ・fileList.csv ※イメージ
21
- *** /***/***/***/123456789.pdf
21
+ 1111 /***/***/***/123456789.pdf
22
- *** /***/***/***/234567890.pdf
22
+ 1111 /***/***/***/234567890.pdf
23
23
 
24
24
 
25
25
  ・check.sh

3

シェバング、SQLNAMEの変数、実行コマンドを追記

2020/10/06 11:44

投稿

narito
narito

スコア0

title CHANGED
File without changes
body CHANGED
@@ -23,6 +23,8 @@
23
23
 
24
24
 
25
25
  ・check.sh
26
+ #!/bin/bash
27
+ readonly SQLNAME="check.sql"
26
28
  cat fileList.csv | while read line
27
29
  do
28
30
  file_name=`echo $line | grep '^[0-9]' | cut -d '/' -f5`
@@ -44,4 +46,7 @@
44
46
 
45
47
  select path from target where filename = &1;
46
48
  EXIT;
47
- /
49
+ /
50
+
51
+ ・実行コマンド
52
+ sh check.sh

2

if文の終了部分を追記

2020/10/06 11:17

投稿

narito
narito

スコア0

title CHANGED
File without changes
body CHANGED
@@ -32,6 +32,7 @@
32
32
  sqlplus -s ***/*** << EOF
33
33
  @${SQLNAME} ${file_name}
34
34
  EOF
35
+ fi
35
36
  done
36
37
 
37
38
  ・check.sql

1

実行ファイル内容の記載

2020/10/06 11:11

投稿

narito
narito

スコア0

title CHANGED
File without changes
body CHANGED
@@ -14,4 +14,33 @@
14
14
 
15
15
  現在行った対応
16
16
  ・引数で渡すファイルの「.」の前に¥を配置し、sql側でSET ESCAPE ¥ を記載
17
- ・sql側でSET BLOCKTERMINATOR OFF
17
+ ・sql側でSET BLOCKTERMINATOR OFF
18
+
19
+
20
+ ・fileList.csv ※イメージ
21
+ *** /***/***/***/123456789.pdf
22
+ *** /***/***/***/234567890.pdf
23
+
24
+
25
+ ・check.sh
26
+ cat fileList.csv | while read line
27
+ do
28
+ file_name=`echo $line | grep '^[0-9]' | cut -d '/' -f5`
29
+
30
+ if [ -n "$file_name" ]; then
31
+
32
+ sqlplus -s ***/*** << EOF
33
+ @${SQLNAME} ${file_name}
34
+ EOF
35
+ done
36
+
37
+ ・check.sql
38
+ SET LINESIZE 10000
39
+ SET PAGESIZE 0
40
+ SET FEEDBACK OFF
41
+ SET TAB OFF
42
+ SET VERIFY OFF
43
+
44
+ select path from target where filename = &1;
45
+ EXIT;
46
+ /