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

CSVファイルのカンマと二重引用符を同時にエスケープするにはどうすればよいですか?

    いくつかのライブラリがあります。次に2つの例を示します。

    ❐ApacheCommonsLang

    Apache Commons Langには、文字列(CSV、EcmaScript、HTML、Java、Json、XML)をエスケープまたはアンエスケープするための特別なクラスが含まれています: org.apache.commons.lang3.StringEscapeUtils

    • エスケープ CSVへ

      String escaped = StringEscapeUtils
          .escapeCsv("I said \"Hey, I am 5'10\".\""); // I said "Hey, I am 5'10"."
      
      System.out.println(escaped); // "I said ""Hey, I am 5'10""."""
      
    • Unescape CSVから

      String unescaped = StringEscapeUtils
          .unescapeCsv("\"I said \"\"Hey, I am 5'10\"\".\"\"\""); // "I said ""Hey, I am 5'10""."""
      
      System.out.println(unescaped); // I said "Hey, I am 5'10"."
      

    *ダウンロードできます ここ。

    ❐OpenCSV

    OpenCSVを使用する場合 、コンテンツの書き込みまたは読み取りのみを行うために、エスケープまたはエスケープ解除について心配する必要はありません。

    • ファイルの書き込み:

      FileOutputStream fos = new FileOutputStream("awesomefile.csv"); 
      OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
      CSVWriter writer = new CSVWriter(osw);
      ...
      String[] row = {
          "123", 
          "John", 
          "Smith", 
          "39", 
          "I said \"Hey, I am 5'10\".\""
      };
      writer.writeNext(row);
      ...
      writer.close();
      osw.close();
      os.close();
      
    • ファイルの読み取り:

      FileInputStream fis = new FileInputStream("awesomefile.csv"); 
      InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
      CSVReader reader = new CSVReader(isr);
      
      for (String[] row; (row = reader.readNext()) != null;) {
          System.out.println(Arrays.toString(row));
      }
      
      reader.close();
      isr.close();
      fis.close();
      

    *ダウンロードできます ここ。



    1. トリガーを使用して、挿入または更新を停止します

    2. OracleでのSELECTCOUNT(*)FROMsometableのより高速な代替手段

    3. date_trunc()がPostgreSQLでどのように機能するか

    4. ローカルで提供されたリストを使用して、リモートのpostgresqlデータベースからレコードを削除する