Ich brauche etwas Hilfe mit einem Projekt, an dem ich arbeite. Der erste Teil des Projekts besteht darin, ein Dienstprogramm/Werkzeug zu erstellen, das falsche Daten generiert und in eine CSV-Textdatei schreibt. Dieser Teil funktioniert gut.Datei lesen in Java und MySQL Datenbank
Hier ist der Code für das ist
import sys
from faker import Factory
fake = Factory.create()
x = 1
param1 = int(sys.argv[1])
f = open('myfile.txt','w')
for x in range (0,param1):
f.write(fake.first_name() + "," + fake.last_name() + "," + fake.job() + "," + fake.email() + ","
+ fake.street_address() + "," + fake.city() + "," + fake.state() + "," + fake.state_abbr() + ","
+ fake.zipcode() + "," + fake.credit_card_provider() + ","
+ fake.credit_card_number() + "," + fake.phone_number() + "\n")
f.close()
(wenn es hilft)
Hier ist, was aus druckt, wenn zusammengestellt:
William,James,Careers information officer,[email protected],9448 Rodriguez Brook Apt. 796,South Lynnbury,South Carolina,VA,26103,JCB 16 digit,3112583369273283,1-002-827-0311x681
Luis,Martin,Air cabin crew,[email protected],6154 James Cove,Christianberg,New York,RI,37208,JCB 15 digit,378433042568763,+42(0)3011107909
Jose,Jones,Make,[email protected],431 Jessica Pass,East Robertburgh,Texas,SC,46458,Mastercard,4800941995105607,(047)981-1856x1825
Mary,Pope,Field seismologist,[email protected],00799 Tracy Trace,Robinburgh,Rhode Island,HI,68855,JCB 16 digit,6011260007331949,+66(4)4995888616
Jennifer,Villanueva,Tax adviser,[email protected],271 Simmons Mountains,Boydmouth,Nebraska,NM,98981,JCB 16 digit,210077713575961,639.575.1338x414
Die zusätzlichen Leerzeichen zwischen jeder Zeile, habe ich sie hier für die Zwecke der Lesbarkeit .
Der nächste Teil des Projekts ist die Entwicklung einer Anwendung in Java, die die unstrukturierten Daten aus der CSV-Textdatei in eine normalisierte Datenbank importiert.
Ich habe einige Java-Code, aber es funktioniert nicht die Art, wie ich denke, es sollte (BTW, fühlen Sie sich frei, meine Gedanken zu korrigieren, wie es getan werden sollte). So wie ich es denke sollte, ist arbeiten
- Importieren der Daten in Java
- Verwenden Sie die vorbereitete Anweisung Funktion, um eine SQL-Anweisung zu erstellen, die die Daten in die Tabelle importieren wird zusammen mit den Funktionen, die .setString sind dafür erforderlich
Allerdings funktioniert es nicht richtig. Zuerst werde ich den Code setzen und dann werde ich erklären, was los ist:
package com.company;
import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
private static Connection connect() {
Connection mysql = null; //sets values to null before actually attempting a connection
PreparedStatement pst = null;
ResultSet data = null;
try
{
Class.forName("com.mysql.jdbc.Driver");
String connectionStringURL = "jdbc:mysql://us-cdbr-azure-west-b.cleardb.com:3306/acsm_0a00c1270f36f77"; //database name
mysql = DriverManager.getConnection(connectionStringURL, "username", "password"); //username, password
if (mysql == null) //check to make sure that it actually connected
System.out.println("Connection Failed");
else
System.out.println("Success");
}
catch (Exception ex) //catches connection failure exception
{
ex.printStackTrace();
}
return mysql;
}
public static void main(String[] args) throws Exception {
String filename = "/Desktop/myfile.txt";
PreparedStatement pstmt = null;
Connection mysql = connect();
try
{
pstmt = mysql.prepareStatement("INSERT INTO Customer (First Name, Last Name, Job, Email, Phone Number) VALUES (?,?,?,?,?)");
Scanner s = new Scanner(new File("/Desktop/myfile.txt"));
ArrayList<String> list = new ArrayList<String>();
while (s.hasNextLine())
{
list.add(s.nextLine());
}
System.out.println(list);
s.close();
}
catch (SQLException e)
{
e.printStackTrace();
}
}
}
Die erste Funktion offensichtlich Funktion meiner Datenbankverbindung ist, gibt es kein Problem.
Die zweite Funktion ist, wo das Problem liegt. Derzeit habe ich eine vorbereitete Anweisung mit dem SQL-Skript bereits drin. Das wird jedoch noch nicht verwendet. Ich versuche zuerst, die Datei Zeile für Zeile DANN für jedes Feld zu analysieren.
bat ich einen Freund von mir, wie es geht, und er sagte zu
- lesen Datei Zeile für Zeile, Split auf Komma und übergeben zu Array
- eine Datenklasse machen, die Elemente für jede Spalte in Ihrer Datei erstellt
- für jede Array Linie, ein Objekt von Datenklasse
- sehen batchExecute() für jdbc
- Schreib Insert-Anweisung, und führen Sie erstellen 210
Für den ersten Schritt, wo es heißt, "an Array übergeben", würde das nur ein Array oder eine ArrayList verwenden, und für beide, würde dies bedeuten, dass jeder Datensatz/Zeile sein eigenes Array/Arraylist hätte?
Ich bin nicht genau sicher, wie man die anderen Schritte auch tut. Ich habe überall im Internet nach Antworten gesucht, aber ich bin kurz gekommen.
Ich glaube nicht, dass ich vergessen habe, etwas zu erwähnen, aber wenn du etwas mehr Klarheit über etwas benötigst, was ich sagte, würde ich gerne versuchen zu erklären, was ich meinte. Jede Hilfe wird geschätzt.
Vielen Dank im Voraus.