質問編集履歴

1

質問の内容について補足と詳細を追加

2020/06/06 01:59

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -4,11 +4,45 @@
4
4
 
5
5
  バッチファイルにて、SQLPLUSを実行しCSVファイルを作成。その後、作成したCSVファイル内の特定の文字列を置換する、という処理を実現させたいと考えています。
6
6
 
7
+ 置換処理は、「特定の値を持つのカラムのみ囲み文字を削る」というものです。
8
+
9
+
10
+
11
+ CSVファイル出力直後・置換前
12
+
13
+ "CODE","NAME","AGE","SEX","OTHER"
14
+
15
+ "0001","太郎",20,"male","XXX"
16
+
17
+ "0002","花子",21,"female","XXX"
18
+
19
+ "0003","一郎",22,"male","YYY"
20
+
21
+
22
+
23
+ 上記のうち、"XXX"をXXXに置換
24
+
25
+
26
+
27
+ 置換後
28
+
29
+ "CODE","NAME","AGE","SEX","OTHER"
30
+
31
+ "0001","太郎",20,"male",XXX
32
+
33
+ "0002","花子",21,"female",XXX
34
+
35
+ "0003","一郎",22,"male","YYY"
36
+
7
37
 
8
38
 
9
39
  ### 発生している問題・エラーメッセージ
10
40
 
11
- 処理自体は実現できているのですが、出力されるCSVファイルのサイズが非常に大きく、文字列置換処理でかなり時間がかかってしまっているので、それを解消したいのです。
41
+ 下記のソースコードで処理自体は実現できているのですが、出力されるCSVファイルのサイズが非常に大きく、文字列置換処理でかなり時間がかかってしまっているので、それを解消したいのです。
42
+
43
+
44
+
45
+ 置換処理は「特定の値を持つのカラムのみ囲み文字を削る」というものであるため、SQLのREPLACEなどでも対応できません。また、「特定の値」はカラムが限定できません。
12
46
 
13
47
 
14
48
 
@@ -86,9 +120,9 @@
86
120
 
87
121
  :replace_str
88
122
 
89
- rem CSV内のAAAという文字列をBBBに変換
123
+ rem CSVファイル内の"AAA"という文字列をAAAに変換
90
124
 
91
- set l=%line:AAA=BBB%
125
+ set l=%line:"AAA"=AAA%
92
126
 
93
127
  >>%fname% echo %l%
94
128