[JAVA] Fügen Sie die Wörterbuchdaten von Eijiro in eine Oracle-Tabelle ein

Am Anfang

Beschreibt die Vorgehensweise beim Einfügen von Eijiros Wörterbuchdaten in eine Oracle-Tabelle. Dieses Mal beschreiben wir den Zugriff von Oracle DB aus Java aus der Extraktion von Wörterbuchdaten. Die Frage der Eingabe von Daten aus Wörterbuchdaten in Oracle DB wird im nächsten Artikel beschrieben.

Konvertieren Sie Eijiros Wörterbuchdaten in Text

Extraktion von Wörterbuchdaten

Ich habe eine Textdatei unter Bezugnahme auf Erstellen einer SVL-Problemsammlung aus Eijiro erstellt. Übrigens habe ich es wie ↓ eingestellt image.png image.png

Ich habe es wie oben eingestellt

Übrigens gebe ich im HTML-Dateiformat aus und analysiere die Textdatei mit Jsoup.

Zeichencode-Konvertierung extrahierter Daten

Wenn Sie die extrahierte Textdatei öffnen

image.png

Die Charaktere sind verstümmelt wie. Bei dieser Geschwindigkeit kann Jsoup nicht gut damit umgehen (nein, es ist wahr, aber es ist ärgerlich), also habe ich ein Programm erstellt, um den Zeichencode in Java zu konvertieren.

FileReadTest2.java


package file;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class FileReadTest2 {

	private static String FILE_PATH ="C:/Users/***/Desktop/puisan_101.txt";
	private static String FILE_OUT_PATH ="C:/Users/***/Desktop/puisan_102.txt";
	
	public static void main(String args[]) throws Exception{
		BufferedReader reader=new BufferedReader(new InputStreamReader(new FileInputStream(FILE_PATH),"UTF-8"));
		BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(FILE_OUT_PATH),"UTF-8"));
		reader.lines().forEach(s->fileWriter(s,writer));
		reader.close();
		writer.close();
	}
	
	public static void fileWriter(String s,BufferedWriter writer){
		try{
			writer.write(s);
			writer.newLine();
		}catch(IOException e){
			e.printStackTrace();
			throw new RuntimeException("Bei der Eingabe / Ausgabe der Datei ist ein Fehler aufgetreten");
		}
	}
}

Wenn Sie das obige Programm ausführen image.png Eine HTML-Datei wird ohne verstümmelte Zeichen wie erstellt

DB-Tabellendefinition

Erstellen Sie in orace12c eine Tabelle mit dem Namen WORD_DICTIONARY und definieren Sie die folgenden Attribute

Name Schimmel Erläuterung
WORD VARCHAR2(200) Wort
MEANING CLOB Japanische Übersetzung von Wörtern
SHORT_VER VARCHAR2(2000) Teil von BEDEUTUNG(2000 Bytes)Lagern
WORD_LEVEL VARCHAR2(20) Wortebene
WORD_INDEX UMBER(10) Eine Nummer, die jedem Wort eindeutig zugeordnet ist
SEARCH_WORD VARCHAR2(200) Untere Wortkonvertierung für die Suche

Programm, das DB betreibt

Wir standardisieren die Verarbeitung rund um Connection, implementieren Einfügeanweisungen auf niedriger Ebene und erweitern die Batch-Methode von QueryRunner, die nicht einfach zu verwenden ist.

OperateDB.java


package word;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;

public class OperateDB {
    public static ThreadLocal<Connection> THREAD_LOCAL = new ThreadLocal<Connection>();

	//Ab oracle12c muss eine Verbindung über den Dienstnamen anstelle der SID hergestellt werden, sodass die gesamte tns-Definition geschrieben werden muss
	private static final String URL ="jdbc:oracle:thin:"		
			+ "@(DESCRIPTION=(ADDRESS = (PROTOCOL = TCP)"
			+ "(HOST = localhost)(PORT = 1521))"
			+ "(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME "
			+ "= triple_pb.co.jp)))";
	private static final String UID = "admin"; 
	private static final String PASS_WORD = "admin"; 
    
    
    public static void createConnection(){
    	try{
    		if(THREAD_LOCAL.get()==null){
    			Connection con = DriverManager.getConnection(URL, UID, PASS_WORD);
    			con.setAutoCommit(false);
    			THREAD_LOCAL.set(con);
    		}
    	}catch(Exception e){
    		e.printStackTrace();
    	}
    }
    
    public static void closeConnection(){
    	try{
    		if(THREAD_LOCAL.get()!=null){
    			THREAD_LOCAL.get().close();
    		}
    	}catch(Exception e){
    		e.printStackTrace();
    	}
    }
    
    public static void insert(List<Object[]> list,String sql){
    	try{
            new MyQueryRunner()			
            .batch(THREAD_LOCAL.get(), //Stellen Sie eine Verbindung her
            		sql, //Abfrage auszuführen
            		list  //Parameter, die an die Abfrage übergeben werden sollen
      	     );    			
            THREAD_LOCAL.get().commit();
    	}catch(Exception e){
    		e.printStackTrace();
    		try{
           		THREAD_LOCAL.get().rollback();
    		}catch(SQLException ex){
    			ex.printStackTrace();
    		}
    	}
    }
    
     public static class MyQueryRunner extends QueryRunner{
    	 public int[] batch(Connection con,String sql,List<Object[]> list)throws SQLException{
    	    Object[][]params = new Object[list.size()][];
    	    for(int i=0; i<list.size();i++){
    	    	params[i] = list.get(i);
    	    }
    	    return super.batch(con,sql,params);
    	  }
      }
}



Recommended Posts

Fügen Sie die Wörterbuchdaten von Eijiro in eine Oracle-Tabelle ein
Einfügen von Eijiros Wörterbuchdaten in Oracle DB Teil2
Fügen Sie Daten mithilfe der Yaml-Datei in die Datenbank ein