質問

私は輸入データから CSV ファイル番号のよう 1000 が発生しない仕組みを導入 1,100 など。

何を排除するのに良い方法での見積りのカンマで区切らこそできればお気に入り int うとするのだろうか。

編集:

のデータは実際に既存のMySQLのテーブルながらやっていく必要があるできることを利用してください。しまいまして申し訳ありませんmixup.

役に立ちましたか?

解決

この場合のための正規表現オブジェクトまた、検索と置換のデータを含まないあなたがインポート(く)以降の場合はSQL輸入受け入れの文字をなしている。それで、いくつかの方法な検索と置換で編集者、スクリプト言語GUIプログラム等覚えておいた検索と置換 すべての いと思います。

典型的な正規表現をカンマとな引用符を想定だけでダブルクォート)では: (ブラックリスト)

/[,"]/

ただ何かが変更に今後は、この正規表現にマッチ以外の数値は小数点です。 (Whitelist)

/[^0-9\.]/

いて議論が行われている人に上ることがわからないとすべてのデータをCSVファイルです。そのように削除したいのは次のとおりで、からの引用の数値をCSVファイルです。ではわからないものCSVファイルにしたいのだができない腐敗タリアで作られています。で突き詰めて見交換に影響を与えるその他の部分のファイルです。

他のヒント

私からは、データができたのは輸入するのは、実はvarcharまたは一文字の分野での輸入る数字の分野が失敗しました。ここではテストの場合を行った純粋に、MySQL、SQLます。

  1. のテーブルは、単一カラム(アルファがあるんだということvarchar.

    mysql> desc t;
    
    +-------+-------------+------+-----+---------+-------+
    | Field | Type        | Null | Key | Default | Extra |
    +-------+-------------+------+-----+---------+-------+
    | alpha | varchar(15) | YES  |     | NULL    |       | 
    +-------+-------------+------+-----+---------+-------+
    
  2. 追加記録

    mysql> insert into t values('"1,000,000"');
    Query OK, 1 row affected (0.00 sec)
    
    mysql> select * from t;
    
    +-------------+
    | alpha       |
    +-------------+
    | "1,000,000" | 
    +-------------+
    
  3. 更新。

    mysql> update t set alpha = replace( replace(alpha, ',', ''), '"', '' );
    Query OK, 1 row affected (0.00 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    
    mysql> select * from t;
    
    +---------+
    | alpha   |
    +---------+
    | 1000000 | 
    +---------+
    

そういう意味では、決したものを使用した:

UPDATE table
   SET field_name = replace( replace(field_name, ',', ''), '"', '' );

ご本人の了解のもと、掲載してい MySQLの文書 といつものような思いを正規表現を見 交換.ができ、 Eldila, 使用の正規表現のための探し方のための取り外して交換できます。


またはご注意ください s/"(\d+),(\d+)"/$1$2/ この場合にはその単一のコンマス"1,000,000"といえるものにしたいグローバルに交換(perlる s///g).でもグローバルに置き換え代替開始が最左オフにない場合perlは異なります)、ミスのその他のカンマで区切られます。大きい最初の(\d+)オプションはこのように s/(\d+)?,(\d+)/$1$2/g この場合っていなければいけないと考えて第二の検索と置換グレーのクラムシェル型クランプします。

ここではルビーの正規表現行の文字列"1,000,000"通知がない二重引用符内の文字列、この文字列番号そのものです。

>> "1,000,000".sub( /(\d+),(\d+)/, '\1\2' )
# => "1000,000"  
>> "1,000,000".gsub( /(\d+),(\d+)/, '\1\2' )
# => "1000,000"  
>> "1,000,000".gsub( /(\d+)?,(\d+)/, '\1\2' )
# => "1000000"  
>> "1,000,000".gsub( /[,"]/, '' )
# => "1000000"  
>> "1,000,000".gsub( /[^0-9]/, '' )
# => "1000000"

を使用できるこのperlコマンドです。

Perl -lne 's/[,|"]//; print' file.txt > newfile.txt

する必要がある遊んでもとっています。

こちらはPHPの方法:

$stripped = str_replace(array(',', '"'), '', $value);

リンクW3Schoolsページ

実際にnlucaroni、例んですよね。自例を含まない二重引用符で

id,age,name,...
1,23,phil,

思わっregex.このフォーマット"XXX,XXX.思いつかないの例の場で試合が間違っています。

以下のすべての例などのdeliminatorのregex:

"111,111",234
234,"111,111"
"111,111","111,111"

教えてくださいできれば、カウンターの一例です。

感謝!

の解決の問題は基本的に同じです。

まして実行を選択しクエリには正規表現の場を提供しています。

顕ように

Select *
  FROM SOMETABLE
  WHERE SOMEFIELD REGEXP '"(\d+),(\d+)"'

Foreachこれらの行い以下の正規表現代替s"/"(\d+),(\d+)"/$1$2/その更新の分野に新しい値とします。

くださいJoseph Pecoraro真剣にやってバックアップを前に出した大量の変更ファイルやデータベースです。できない正規表現は、すべての空港を表示一部の空港を表データの場合があります。

私のコマンドはすべて削除し','および'"'.

に変換するために、スティング"1,000人"より厳密には、以下のコマンドです。

Perl -lne 's/"(\d+),(\d+)"/$1$2/; print' file.txt > newfile.txt

ダニエルのEldilaの答えを持つ問題:彼らはすべて引用符は、カンマ区切りで入力全ファイルです。

何をいっていいのようなことは、最初に置き換えて引用符を分離、(普通)にセミコロンによる機能です。

  • 検索: ";"
  • 置き換え:

ているカラムは私の影響値となりますそしてもう一度検索と置き換え:

  • 検索: ^([ ]+) [ ]+) ([0-9]+),([0-9]+)
  • 置き換え: \1 \2 \3\4

...の値をコンマでのカラムです。

始める必要があります"に"^"を確認することで始まりの始まり。それを繰り返します([0-9]+) などがある列だいている点にあります。

([0-9]+),([0-9]+) 検索のための価値があるそれぞれのコンマとその他の番号です。

の置換文字列おり1、2を保つの値の編集回線を分離してとりのシングルプラン(タブ).そし\3\4(タブの間)の二つの成分の数をカンマで区切後ます。すべての値の後に置かれていることになる.

が必要な場合はファイルにセミコロンで分離の要素、そしていただくことも可能で、交換のタブとセミコロン.しかし、そのままにした場合の引用-ょうテキスト値は一切含まれておりません。セミコロンです。そのたまりませんので、予めごのタブとしての列のセパレーターが不要になる。

いる通常のテキストエディタ(EditPlusを支援する正規表現が同じregexps使用できるプログラミング言語.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top