Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505

    [JDBC] Eseguire comando source

    Avrei bisogno tramite JDBC di far eseguire il comando source su un db in MySQL, sto provando di tutto, ma non funziona, mi dice sempre che c'è un errore di sintassi nel comando.

    stmt.execute("source c:\\popola.txt")
    il messaggio dice che c'è un errore di sintassi 'near source c:\popola.txt' ma non ne capisco il motivo, perché lo stesso identico comando, scritto sulla console, fa il suo dovere.
    Ho porvato anche con executeUpdate, executeQuery... ma niente.

    Cosa potrei provare?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JDBC] Eseguire comando source

    Originariamente inviato da Alhazred
    Avrei bisogno tramite JDBC di far eseguire il comando source su un db in MySQL, sto provando di tutto, ma non funziona, mi dice sempre che c'è un errore di sintassi nel comando.

    stmt.execute("source c:\\popola.txt")
    il messaggio dice che c'è un errore di sintassi 'near source c:\popola.txt' ma non ne capisco il motivo
    Il motivo è semplice: non è una istruzione SQL!!! È un comando interpretato solo dal tool a linea di comando 'mysql'.
    Come dice la documentazione qui: There is also a set of commands that mysql itself interprets. For a list of these commands, type help or \h at the mysql> prompt:

    Forse ti è più utile la istruzione SQL LOAD DATA:
    http://dev.mysql.com/doc/refman/5.0/en/load-data.html
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Grazie per la risposta.
    Load Data però da quanto ho capito mi permette di inserire tuple in una tabella, visto che "INTO TABLE tbl_name" è obbligatorio.
    A me servirebbe qualcosa che funzioni esattamente come il source, anche perché oltre a popolare le tabelle, io ho la necessità proprio di crearle le tabelle.
    In pratica dovrei eseguire tramite JDBC queste 2 istruzioni:
    source c:\createtables.txt
    source c:\popola.txt

    come si fa?

  4. #4
    il messaggio dice che c'è un errore di sintassi 'near source c:\popola.txt' ma non ne capisco il motivo, perché lo stesso identico comando, scritto sulla console, fa il suo dovere.
    In genere per eseguire tramite java un comando che eseguiresti sulla console puoi usare Runtime.getRuntime().exec("...."). Però non è questo il caso.
    Per fare quello che fa il comando source puoi creare una stringa a partire dal contenuto del file ed 'eseguirla' tramite JDBC. Con queste istruzioni


    ....
    Statement stmt = conn.createStatement();
    try {
    BufferedReader in = new BufferedReader(new FileReader("c:\\createtables.txt"));
    String str;
    while ((str = in.readLine()) != null) {
    stmt.executeUpdate(str);
    }
    in = new BufferedReader(new FileReader("c:\\popola.txt"));
    while ((str = in.readLine()) != null) {
    stmt.executeUpdate(str);
    }
    in.close();
    } catch (IOException e) {}
    ...


    ovviamente deve verificarsi che ogni riga dei file c:/createtables.txt e c:/popola.txt sia un comando completo per MySQL.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.