お世話になります。
現在テキストファイルをOracleデータベースに取り込む処理を開発しております。SQL*Loaderを用いて、テスト.datを取り込もうとしたのですが、
ORA-01722: 数値が無効です。エラーが出てデータを取り込めません。
テスト.datの中身を見たところ、該当個所に下記のようにNULLが入っていました。
数値型のテーブル項目に、NULLを取り込もうとしてエラーになっています。
Oracleの場合、数値型では空白は取り込めるようですが、NULLは取り込めないようです。
ですので、テスト.datのNULLの個所を空白に変換する方法を調査しています。
sedや、awk、perlを使えばできるのでしょうが、私は詳しくないため
方法が思いつきません。
どなたか、sed、awk、perlに詳しい方がいれば、方向性のヒントだけでも
お教えねがいますでしょうか。
環境: Solaris 9
■テスト.dat
od -c テスト.dat > テスト.txt
※ \t = タブ、\0= NULL
$ head -10 テスト.txt
0000000 0 0 1 \t 0 1 0 1 \t 1 \t 0 1 0 1 \t
0000020 0 0 0 0 0 0 \t 0 3 7 \t 1 0 0 1 0
0000040 2 8 \t \0 \0 \0 \t \0 \0 \0 \0 \0 \0 \0 \0 \0
0000060 \0 \t \0 \t 0 0 \t 6 3 \t 0 0 \t 1 \t
■編集後のイメージ
\0(NULL)の個所を、そのままスペース(空白)で置き換えたい。
0000000 0 0 1 \t 0 1 0 1 \t 1 \t 0 1 0 1 \t
0000020 0 0 0 0 0 0 \t 0 3 7 \t 1 0 0 1 0
0000040 2 8 \t \t
0000060 \t \t 0 0 \t 6 3 \t 0 0 \t 1 \t
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
以下のようなperlのスクリプトを作ってください。
-----------------------------------
open FH, $ARGV[0] or die "open error $!";
while(read FH,$data,1){
$data =~ tr/\x00/\x20/;
print $data;
}
close FH;
---------------------------------
上記のスクリプトのファイル名を conv.pl とします
perl conv.pl テスト.dat > テスト.dat2
とすると
テスト.dat2が作成されます。(NULLをスペースに変換したファイル)
お世話になります。
教えていただいた方法で、目的のファイルを作成でき、
無事Oracleに取り込むことができました。
Perlって便利ですね。
これから勉強しようと思います。
非常に助かりました。
tatsu99さん、ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) アクセス テーブルの空白を変数に置換するボタンが作りたい 4 2022/07/08 11:19
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- その他(コンピューター・テクノロジー) 【Tableau Desktop】文字列から8桁の数字を日付型(yyyyMMdd)として取得 1 2023/07/31 10:17
- PHP isset — 変数が宣言されていること、そして null とは異なることを検査 1 2022/03/27 17:34
- PHP データベースを用いたwebページ 1 2022/12/27 20:12
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 3 2022/10/27 17:44
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
texに関する初歩的な質問
-
P2P地震速報のEEW APIの仕様書...
-
文字をなぞるとポップアップが...
-
Zと2とか紛らわしいのがあるか...
-
納品 vs ご納品 どちらが正し...
-
PostgreSQL+DataGridView
-
オーバレイ方式と仮想記憶シス...
-
グーグルの障害者訓練プログラ...
-
購入手続き後の値上げ
-
営業職をやってます。先月発注...
-
個人でデザインやイラストを書...
-
契約期間内における値上げ等に...
-
敬語チェックお願いします!
-
翻訳お願いします。英→日
-
どうすれば過剰発注抑えられま...
-
印刷会社がミスプリント。その...
-
納入日と納品日について
-
ヴィジュアルベーシックについて
-
1次元バーコードを読み取りたい
-
発注書について とある株式会社...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
P2P地震速報のEEW APIの仕様書...
-
texに関する初歩的な質問
-
C#単体テストで同クラス内の呼...
-
テスト仕様書作成って初心者(...
-
EXCEL_VBAでOracleにADO接続し...
-
C#の単体テストでローカル変数...
-
ホームページ・ビルダーで「e...
-
VBからBeckyを使用したメール送...
-
HWNDへの変換
-
Visial C++におけるプログラミング
-
JUnit結果出力をファイルに書き...
-
Verilogの参考書のお勧めを教え...
-
UNIX:テキストファイルのNULL...
-
仕様書に書かれていないこと
-
VB6 コードでメニュー作成
-
テスト仕様書の著作権について
-
Excel-VBA コンテンツの作成日時
-
文字をなぞるとポップアップが...
-
単体テストについて
-
ハノイ塔の非再帰について
おすすめ情報