sql >> データベース >  >> RDS >> Mysql

RubyCSV読み取り複数行フィールド

    問題は複数行ではなく、不正な形式のCSVです。

    \"を置き換えます 次のように行の終わりの後にスペースを終了します:

    require 'csv' 
    
    ml = %q{"id","name","address","email","potato" 
    1,"Bob","---  
    - 101 Cottage row 
    - Lovely Village 
    - \"\" 
    ","[email protected]","omnomnom" 
    2,"Charlie","---  
    - 102 Flame Street 
    - \"\" 
    - \"\" 
    ","[email protected]","andcheese" 
    4,"Doug","---  
    - 103 Dark Cave 
    - Next to some geo dude 
    - So many bats 
    ","[email protected]","usemeltattack"}
    
    ml.gsub!(/\" \n/,"\"\n").gsub!(/\\\"/,"__")
    
    CSV.parse(ml, {:headers=>true}) do |row|
      puts row
    end
    

    これにより:

    "id","name","address","email","potato"
    1,"Bob","---  
    - 101 Cottage row 
    - Lovely Village 
    - ____
    ","[email protected]","omnomnom"
    etc
    

    CSVを配信するプログラムを制御できない場合は、ファイルを開き、内容を読み取り、置換を実行してから、CSVを解析する必要があります。 __を使用しています ここでは、競合しない他の文字を使用できます。




    1. UbuntuでpgAdminを使用してPostgresをローカルホストサーバーに接続するにはどうすればよいですか?

    2. MySQLでデータベースの名前を変更する方法

    3. 私のSQLダイナミッククエリが実行され、ストアドプロシージャの変数に出力されます

    4. MySQL-重複する値ごとにカウンターを取得します