0

Oracle から PostGreSQL に移行中です。私が見つけた 1 つの問題は、"," を "." に置き換える必要があることです。数値の場合。

例えば

Insert into DAILY_DATA_READING (READING_ID,MG_ID,DAILY_READING_DATE,ACQUISITION_DATE,PUBLISHED,PUBLISHING_DATE,POD_ID,VB_DAILY,VM_DAILY,VB_TOT,VM_TOT,VM_TOT_AL,CONV_QMAX_FLOW_RATE,GATH_CONV_QMAX_FLOW_RATE_DATE,RECORD_VALIDITY,PARTITION_INDEX) 
values ('1028','99990000000010001',to_timestamp('16-OCT-12 06:00:00,000000000','DD-MON-RR HH24:MI:SS,FF'),to_timestamp('16-OCT-12 08:27:10,704000000','DD-MON-RR HH24:MI:SS,FF'),null,null,'99990000000010','13','48','93','234','35',
'101,4000015258789',to_timestamp('15-OCT-12 12:20:00,000000000','DD-MON-RR HH24:MI:SS,FF'),'S','10');

この例では、101,4000015258789101.4000015258789に置き換える必要があります。「、」を検索し、その後に8桁が続き、それを「。」に置き換える単純なテキストスキャンを試しました。しかし、タイムスタンプ列も置き換えました。
INSERT ステートメントに含まれる 14 番目のフィールドだけを置き換える正規表現を作成することは可能ですか?
どうもありがとう

4

2 に答える 2

0

sed にアクセスできる場合は、次のことができます。

sed -r "s/('[0-9]+),([0-9]{8,}')/\1.\2/g" file.sql

または Mac の場合:

sed -E "s/('[0-9]+),([0-9]{8,}')/\1.\2/g" file.sql
于 2013-03-28T09:44:39.310 に答える
0

SQLで、置き換えます

('[0-9]*),([0-9]+')

$1.$2

または(使用しているプログラムによって異なります)

\1.\2
于 2013-03-28T10:02:08.527 に答える