
SQLローダーCSV取込で、囲み文字がデータ中に入っている場合について
お世話になります。
SQLローダーでCSV取込を行っています。
設定は下記のようになっており、区切り文字はコンマ
囲み文字はダブルコーテーションを指定しています。
LOAD DATA
TRUNCATE
CONTINUEIF LAST != '"'
INTO TABLE WORKTABLE
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(
data1 char,
data2 char,
data3 char
)
このように取り込んだところ、下記のような行でエラーが発生しました。
「"data1","data2",""文字列,文字列""」
どうやら元々ダブルコーテーションで囲まれていたデータが
CSV出力時にもう1度囲まれた状態のようです。
エラー内容
「TERMINATEDとENCLOSEDフィールドに続く終了記号がありません。」
原因はダブルコートであることはわかっています。
色々試したのですが、うまくいきません。
このデータをうまく取り込む方法はあるのでしょうか
よろしくお願いいたします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
LOAD DATA
TRUNCATE
CONTINUEIF LAST != '"'
INTO TABLE WORKTABLE
TRAILING NULLCOLS
(
data1 char TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"',
data2 char TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"',
data3 char TERMINATED BY x'09'
)
のように、フィールド毎に、区切りや囲みを指定する事は可能です。
上記の例だと、第3フィールドは「""文字列,文字列""」という内容で登録されます。
ローダーはダブルコーティション以外の囲み文字の場合には、ダブルコーティションを
エスケープ文字として使えないので、そのままロードされます。
なので、data3にREPLACE関数記述で、ダブルコーティション2個を1個に置換すれば、
実質的にエスケープ文字として使えるんじゃないですかね。
(「""aa,bb,"",cc,""」→「"aa,bb,",cc,"」のような感じで。)
No.2
- 回答日時:
パラメータに・・
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
と書く場合、
各フィールドが、”で囲まれている必要があります。
そして、”を文字として扱いたい場合は、””と書くルールになっています。
ということで、パラメータの記述から見たデータの表現が不適切なので
エラーになっています。
第3フィールドの””文字列,文字列””は、どのように扱いたいのでしょう?
「””文字列,文字列””」と登録したいのですか?
「”文字列,文字列”」と登録したいのですか?
「文字列,文字列」と登録したいのですか?
たまたま最終フィールドなので、場合によっては何とかなるかも知れません。
この回答への補足
ご回答ありがとうございます。
「”文字列,文字列”」と登録したいのです。
色々試行錯誤した結果、「","」を区切り文字に指定、囲み文字は無しで
data1 CHAR "SUBSTR(:data1,2)" のような感じで
第1フィールドの最初のダブルコーテションと第3フィールドの最後のダブルコーテーションを
削除することで、とりあえずエラー回避には成功しました。。。
しかしあまりスマートな方法とは思えない為、
何か良い回避方法があれば教えていただけると助かります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCELの「接続」のSQLのコマンド文字列にて、セルから任意の数値を利用したい 2 2023/03/09 16:43
- その他(プログラミング・Web制作) データ解析ソフトRでのファイル入力read.csvがエラーになります 7 2022/03/27 22:11
- その他(プログラミング・Web制作) Fortranでの出力ファイル 2 2023/03/21 21:25
- Access(アクセス) CSVファイルの「0落ち」にVBA 6 2023/02/02 15:27
- Excel(エクセル) PowerQueryに詳しい方教えてください(Office365) 1 2022/07/24 21:11
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Visual Basic(VBA) エクセル VBA 条件付き書式 簡略化したい 2 2022/06/02 17:46
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
このQ&Aを見た人はこんなQ&Aも見ています
-
SQL*LoaderでCSVから指定した列のみインポートしたい。
Oracle
-
カンマがデータとして入ってるCSVについて
Oracle
-
sql*loader 数値のロード
Oracle
-
-
4
SQL*Loaderで、データを加工してロードしたいです。
Oracle
-
5
SQL*Loaderでのsysdate使用
Oracle
-
6
SQLLOADER
Oracle
-
7
SQL Loaderを使いたい
Oracle
-
8
SQL*Loader フォーマット変換について
Oracle
-
9
SQL*Loaderのコミットポイント設定がうまくいってない?
Oracle
-
10
SQL*Loader Append
Oracle
-
11
Oracleでの文字列連結サイズの上限
Oracle
-
12
oracle spool SJIS → UTF-8
Oracle
-
13
データ削除とSQL*Loaderでのインポート
Oracle
-
14
CASE文のエラーについて
Oracle
-
15
selectした結果の余計な余白を取るにはどうしたらよいのでしょうか
Oracle
-
16
データを削除しても表領域の使用率が減りません
Oracle
-
17
SQLローダーで複数のCSVファイルのデータを一つのテーブルにInsertしたい
その他(データベース)
-
18
SQL*LOADER実行時のロードデータチェック
Oracle
-
19
バッチからsqlplusの接続エラーの検知について
その他(プログラミング・Web制作)
-
20
Chr(13)とChr(10)の違いは?
PowerPoint(パワーポイント)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLローダーCSV取込で、囲み文...
-
テーブルの最後(最新)のレコー...
-
データベースを用いて掲示板を...
-
入力データの半角スペースと全...
-
REGEXPで希望の動作をしてくれない
-
ある文字列の一部がDBに有るか...
-
date型のselect について
-
BLOBやCLOBのパフォーマンスを...
-
int型フィールドにnullを登録で...
-
2回実行のSQL文を1回にしたい
-
日付だけを見てデータをSELECT...
-
データの追加、更新について
-
ファイルメーカーのフィールド...
-
2番目に小さい引数を返す関数
-
Oracleで「文字が無効です」の...
-
引数によってwhere句を切り替え...
-
ファイルの漢数字の順番につい...
-
文字型の順番がうまく並ばない。
-
単一グループのグループ関数で...
-
SELECT FOR UPDATE で該当レコ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQLローダーCSV取込で、囲み文...
-
テーブルの最後(最新)のレコー...
-
int型フィールドにnullを登録で...
-
BLOBやCLOBのパフォーマンスを...
-
ACCESSのクエリで空白以降を別...
-
配列に指定した値が含まれてい...
-
テーブルのフィールドの一番長...
-
固定長データのテキストファイ...
-
Null値件数をカウントする式に...
-
SELECTした合計値をそのまま割...
-
2回実行のSQL文を1回にしたい
-
MySQLでの近似値順での値の取得...
-
mysql accessでの操作について
-
Insert文直後に自動採番(auto_i...
-
CSVからNULL値をインポート
-
SQLです下記の問合せを行うクエ...
-
【MySQL】 DECIMAL(2,1) に 13...
-
重複しないデータのみを抽出
-
複数フィールド対してLIKE '% ...
-
ACCESSでの桁数のあわせ方
おすすめ情報