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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-


SQL*LoaderでCSVから指定した列のみインポートしたい。
Oracle
-


sql*loader 数値のロード
Oracle
-


SQL*Loaderで、データを加工してロードしたいです。
Oracle
-
-
4

カンマがデータとして入ってるCSVについて
Oracle
-
5

SQL*Loaderでのsysdate使用
Oracle
-
6

SQL*Loader Append
Oracle
-
7

SQL*Loaderのコミットポイント設定がうまくいってない?
Oracle
-
8

SQL Loaderを使いたい
Oracle
-
9

SQLLOADER
Oracle
-
10

Oracleでの文字列連結サイズの上限
Oracle
-
11

SQL*Loader フォーマット変換について
Oracle
-
12

oracle spool SJIS → UTF-8
Oracle
-
13

SQLローダーで複数のCSVファイルのデータを一つのテーブルにInsertしたい
その他(データベース)
-
14

データ削除とSQL*Loaderでのインポート
Oracle
-
15

selectした結果の余計な余白を取るにはどうしたらよいのでしょうか
Oracle
-
16

SELECT INTOで一度に複数の変数へ代入をするにはどのようにすれがよいでしょうか?
PostgreSQL
-
17

CASE文のエラーについて
Oracle
-
18

PL/SQLで@ファイル名が反応しません
Oracle
-
19

SQLPLUSで結果を画面に表示しない
Oracle
-
20

SQL*Loader
Oracle
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
隣の枝がはみ出してきたら切ってもいい?最もやってはいけないことは?
「隣の木が越境してきて困るが、勝手に切ってはいけないと聞くし…」そう思っている方も多いだろう。実は、2023年4月1日に民法が改正され、この「越境枝」のルールが大きく変わった。 教えて!gooでも「境界から出て...
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLローダーCSV取込で、囲み文...
-
int型フィールドにnullを登録で...
-
MYSQLのINSERT記述...
-
【MySQL】 DECIMAL(2,1) に 13...
-
group byの並び順を変えるだけ...
-
アクセスのレポートでレコード...
-
レコードの登録順がおかしい
-
where句中のtrim関数について
-
トランザクションログを出力せ...
-
Oracleで「文字が無効です」の...
-
select文の実行結果に空白行を...
-
月末日のみソートしたい
-
SQL文 複数実行
-
レコードの更新履歴について
-
データ
-
単一グループのグループ関数で...
-
SQL*Loader Append
-
SQLで条件にヒットしたレコード...
-
SELECT FOR UPDATE で該当レコ...
-
AccessのSQL文で1件のみヒット...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQLローダーCSV取込で、囲み文...
-
テーブルの最後(最新)のレコー...
-
BLOBやCLOBのパフォーマンスを...
-
ACCESSのクエリで空白以降を別...
-
int型フィールドにnullを登録で...
-
Null値件数をカウントする式に...
-
SELECTした合計値をそのまま割...
-
入力データの半角スペースと全...
-
テーブルのフィールドの一番長...
-
ファイルメーカー10で重複デー...
-
固定長データのテキストファイ...
-
配列に指定した値が含まれてい...
-
CSVからNULL値をインポート
-
MySQLでの近似値順での値の取得...
-
phpMyAdminでインポート
-
2回実行のSQL文を1回にしたい
-
SQLです下記の問合せを行うクエ...
-
【MySQL】 DECIMAL(2,1) に 13...
-
重複しないデータのみを抽出
-
MYSQLのINSERT記述...
おすすめ情報








