環境はUNIXです。
以下のようなテキストファイルを
変換してOracleのテーブルに
取込みたいのですがよい方法をご存知の方
いらっしゃいませんでしょうか?
まずはテキストファイルを変換前の状態から
変換後のようにしたいのです。
シェルまたはPerlで実現可能でしょうか?
<変換前>
地域名称 コーラ お茶 ミルク
北海道 10,000 20,000 30,000
青森 10,000 20,000 30,000
<変換後>
北海道 コーラ 10,000
北海道 お茶 20,000
北海道 ミルク 30,000
青森 コーラ 10,000
青森 お茶 20,000
青森 ミルク 30,000
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
プログラムでも可能だとは思いますが、
そのテキストファイルがTAB区切りか、スペース合わせで作成されているのなら、
EXCELが使えるパソコンに持って行って、縦横を入れ替えれば一瞬です。
その後、csvで吐き出して、SQLLoaderでも使えばそのまま取り込めるのではないでしょうか。
参考URL:http://itpro.nikkeibp.co.jp/article/COLUMN/20060 …
No.2
- 回答日時:
Perl ならまずできるでしょう. 変な文字コードを持ってこられたら困るかもしれんが.
シェルでできるかどうかは, たぶんシェルしだい. 大抵のシェルでできそうだけど, できないシェルがあっても驚きではないな.
No.3
- 回答日時:
bash で書いてみたが、 perl の方がはるかに楽だな。
--- foo.sh (表示がくずれるの空白2文字を全角空白で書いていることに注意)
#!/bin/bash
DELIMITER=' '
read line
IFS_ORIG=$IFS
set -- $line
IFS=$IFS_ORIG
shift
items=("$@")
while read line; do
IFS_ORIG=$IFS
set -- $line
IFS=$IFS_ORIG
region=$1
shift
prices=("$@")
for ((i = 0; i < ${#prices[*]}; i++)) {
echo "$region ${items[$i]} ${prices[$i]}"
}
done
--- foo.txt(デリミタを空白に変更)
地域名称 コーラ お茶 ミルク
北海道 10,000 20,000 30,000
青森 10,000 20,000 30,000
--- result
$ sh foo.sh < foo.txt
北海道 コーラ 10,000
北海道 お茶 20,000
北海道 ミルク 30,000
青森 コーラ 10,000
青森 お茶 20,000
青森 ミルク 30,000
No.4
- 回答日時:
間違った。
前のでも動くけど、とりあえず(表示がくずれるの空白2文字を全角空白で書いていることに注意)
#!/bin/bash
DELIMITER=' '
read line
IFS_ORIG=$IFS
IFS=$DELIMITER
set -- $line
IFS=$IFS_ORIG
shift
items=("$@")
while read line; do
IFS_ORIG=$IFS
IFS=$DELIMITER
set -- $line
IFS=$IFS_ORIG
region=$1
shift
prices=("$@")
for ((i = 0; i < ${#prices[*]}; i++)) {
echo "$region ${items[$i]} ${prices[$i]}"
}
done
この回答への補足
素人で大変申し訳ないのですが
実行してみたところ以下のようなエラーが出てしましました。
$ foo.sh < foo.txt
foo.sh: line 20: syntax error near unexpected token `"$@"'
foo.sh: line 20: ` prices=("$@")'
$ sh foo.sh < foo.txt
foo.sh: 構文エラー 行 11: `items=' unexpected
これはどのような意味でしょうか?
No.5
- 回答日時:
bash入ってないかbashのバージョンが古いか。
たぶんbashのバージョンが古いと思う。bashのバージョンが古いと配列が使えないから。$ bash --version
GNU bash, version 4.1.5(1)-release (i486-pc-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
$ bash foo.sh < foo.txt
北海道 コーラ 10,000
北海道 お茶 20,000
北海道 ミルク 30,000
青森 コーラ 10,000
青森 お茶 20,000
青森 ミルク 30,000
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 北海道 青森駅から木古内駅まで乗り換えなしで行けますか。 8 2022/05/15 01:05
- 軍事学 北朝鮮から発射された大陸弾道弾は日本の排他的経済水域に青森沖170キロに着弾しましたが、発射準備から 5 2022/03/24 16:27
- 新幹線 北海道新幹線の速達列車の名前を予想してください。 私は、 速達型は、ぴりか号(上野、大宮、仙台、盛岡 4 2023/02/11 19:22
- 新幹線 北海道新幹線ができる前に青森ー札幌夜行便があったと思うのですが、その列車名を北海道新幹線の再速達便の 3 2023/07/08 13:25
- 世界情勢 北が北海道や青森に向けてミサイルを撃ちましたが北海道でオスプレイの演習を行なっている牽制ですか? 6 2022/10/04 12:19
- 新幹線 東北北海道新幹線の列車名を東海道山陽新幹線と同じにするとしたら皆さんはどう思いますか? 停車駅は下記 8 2022/06/11 11:40
- 地域研究 日本国民全員を北海道、青森、九州に収めることは可能ですか? 6 2023/05/31 13:06
- その他(社会科学) こんにちは。 青森県、北海道道南の病院のイントネーションはどちらですか? 病院 ①→↓↑→→ (標準 1 2022/08/24 09:42
- 宇宙科学・天文学・天気 今シーズン初の冬将軍がやって来るのは 1 2022/11/30 19:51
- 北海道 青森から北海道へ車で行けますか? 5 2022/06/19 03:04
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ひらがなから全角カタカナへの...
-
シャープ(#)の受け渡し
-
エクセル(Exsel)についての質...
-
gccでiconvを使った文字コード...
-
エクセルでの漢字(全角ひらが...
-
URLが日本語なのになぜ表示...
-
文字列が勝手にエスケープ文字...
-
SJIS->UTF8->SJISコード変換に...
-
Excel VBAでPDFファイルをMicro...
-
16進数の文字列を文章に変える
-
パイソンエラーについて
-
pythonエラー
-
全角入力
-
GoogleAppsScript文字列置換の...
-
全角/半角キーをSendkeys関数で...
-
住宅にカナを入力する際に丁目...
-
CSVファイルの中で、「 , 」カ...
-
VBA EXCEL あるセルの中の一...
-
バッチファイルの正規表現を利...
-
マクロを使ってフォルダー内に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBAでPDFファイルをMicro...
-
文字コードの%E3%80%とは何です...
-
CString から LPCTSTRの型に変換
-
SJIS->UTF8->SJISコード変換に...
-
Pythonについて。
-
Visual Studio プロパティペー...
-
r18文学賞は文字数ではなく、枚...
-
ローマ字からカナに変換する方...
-
エクセルでの漢字(全角ひらが...
-
日付をシリアル値に変換
-
テキストをhtml変換するには
-
VBScript 全角英数記号→半角英...
-
LINUX上でシリアル通信(C++)
-
漢字からカタカナ変換マクロ
-
VBScript文字列をSJISからUTF8...
-
Pythonについて。
-
gccでiconvを使った文字コード...
-
SQLのデータで半角カナを全角に...
-
【PHP】全角記号を半角記号...
-
CString型からdouble型への変換
おすすめ情報