SQLite CSV-Datei einlesen in eine Datenbank

kama_63

Neues Mitglied
Hallo Zusammen,
ich habe ein problem da ich ein Anfänger bin und mein Chef von mir verlangt eine CSV-Datei in eine Datenbank einzulesen. Soweit bin ich gekommen nur weiter weiß ich nicht ich bitte um eure Hilfe.
Ich bedanke mich schon mal im vorraus.

Java:
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;

/**
 * @author KaMa
 * @version 1.0
 * @erklärung Das Programm soll eine CSV-Datei 
 * in eine Datenbank-Datei umwandel/einfügen.
 *
 */
public class Importer {

	public static void main(String[] args) {
		if (args.length == 2) {
			String quellDatei = args[0];
			
			try {
				Scanner leser = new Scanner(new File(quellDatei));
				ArrayList<ArrayList> ablage = new ArrayList<ArrayList>();
				
				// 10 Zeilen ohne Daten lesen
				for (int i = 0; i < 10; i++) {
					leser.nextLine();
				}
				
				// Daten lesen, zerteilen und im ArrayList speichern
				while (leser.hasNextLine()) {
					String zeile = leser.nextLine();
					Scanner teileZeile = new Scanner(zeile);
					teileZeile.useDelimiter(";");
					ArrayList<Object> zeilenSpeicher = new ArrayList<Object>();
					// 1;Schleswig-Holstein;unter 3 Jahre;68609;35099;33510
					teileZeile.next(); // 1
					zeilenSpeicher.add(teileZeile.next()); // Schleswig..
					zeilenSpeicher.add(teileZeile.next()); // unter 3 Jahre
					zeilenSpeicher.add(teileZeile.nextInt()); // 68609
					zeilenSpeicher.add(teileZeile.nextInt()); // 35099
					zeilenSpeicher.add(teileZeile.nextInt()); // 33510
					ablage.add(zeilenSpeicher); // ganze Zeile hinzufügen
				}
				
				// Datenbank vorbereiten
				// CREATE IF NOT EXISTS ...
				
				
				// Daten anzeigen
				
				for (ArrayList zeile: ablage) {
					
					// INSERT INTO VALUES (?, ?, ?)...
					for (Object eintrag: zeile) {
						System.out.print(eintrag + ",");
					}
					System.out.println();
					
				}
				
				
			} catch (FileNotFoundException e) {
				System.out.println("Datei nicht gefunden!");
				e.printStackTrace();
			}
			
		} else {
			System.out.println("Fehler!");
		}

	}

}
 
Beim CSV File einlesen solltest du etwas aufpassen, da du auch Quoting, Zeilenumbrüche usw. berücksichtigen solltest. Nimm einfach OpenCSV und dieses Problem ist erledigt.

Dann öffnest du eine DB Verbindung, erstellst ein Statement oder PreparedStatement und befüllst die Parameter mit den Werten. Am Ende schließt du die DB Verbindung.

Und wenn du mit bisherigen Infos nicht zum Ziel kommst, lies dich auch hier ein: Trail: JDBC(TM) Database Access (The Java™ Tutorials)
 
SQLite bietet auch eine sehr rudimentäre Unterstützung für den Import von CSV-Dateien, siehe SQLite-Wiki:

SQL:
.separator ","
.mode csv
.import file_name.csv table_name

Allerdings wird hierbei nicht auf auf Feldbegrenzungszeichen wie " oder auf maskierte Zeichen Rücksicht genommen. Wenn es sich nicht nur um eine sehr einfache Datei handelt, ist die oben vorgeschlagene Lösung (CSV-Datei mit OpenCSV parsen und dann Zeile für Zeile in die Datenbank einfügen) die beste.
 

Zurück
Oben