2013-02-21 1 views
0

Lorsque vous tentez de créer une chaîne pour contenir la requête suivante pour l'importation d'un fichier CSV dans MySQL, la requête elle-même freine la chaîne que j'essaie de créer.double qoutes dans la chaîne de requête sql

string Query = "load data local infile" + " " + "'" + Filename + "'" + " " + "into table" + " " + Table + "'FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES"; 

Y at-il quelque chose que je fais partie de la ENCLOSED BY '"'?

Merci

+1

évasion avec une barre oblique inverse ' « \ " » 'et ne pas oublier un espace avant' CHAMPS TERMINATED' –

Répondre

0

Résolution du problème par la méthode suivante si cela aide quelqu'un.

public static void MySqlCSVImport(string Filename, string Table, string Server, string Database, string User, string Password, string Port) 
     { 
      try 
      { 
       //enclosed by '"' 
       string FixFilePath = Filename.Replace(@":\", ":\\"); 
       string c = "'" + "\\n" + "'"; 
       string d = ";"; 

       string connectionString = "server=" + Server + ";database=" + Database + ";User Id=" + User + ";password=" + Password + ""; 
       MySqlConnection mySqlConnection = new MySqlConnection(connectionString); 
       mySqlConnection.Open(); 

       string Query = "load data local infile" + " " + "'" + FixFilePath + "'" + " " + "into table" + " " + Table + " FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY" + " " + c + d; 

       MySqlCommand cmd = new MySqlCommand(Query, mySqlConnection); 

       cmd.ExecuteNonQuery(); 

      } 

      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
     } 
0

Vous devez échapper à la double citation omble chevalier en utilisant \: "\""

string Query = "load data local infile" + " " + "'" + Filename + "'" + " " + "into table" + " " + Table + "' FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES"; 
+0

doit manquer quelque chose, je reçois { "Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près de '' FIELDS TERMINATED BY '', 'ENCLOS PAR' \ '' LINES TERMINÉ PAR '\ n' IGNORE 1 LINES 'à la ligne 1 "} – needmorebeerformewallaby

+0

OK, pourriez-vous fournir la chaîne SQL finale avant de l'exécuter? – sdespont

0

Ceci est la méthode complète.

public static void MySqlCSVImport(string Filename, string Table, string Server, string Database, string User, string Password) 
     { 
      try 
      { 
       //enclosed by '"' 
       string connectionString = "server=" + Server + ";database=" + Database + ";User Id=" + User + ";password=" + Password + ""; 
       MySqlConnection mySqlConnection = new MySqlConnection(connectionString); 
       mySqlConnection.Open(); 

       string Query = "load data local infile" + " " + "'" + Filename + "'" + " " + "into table" + " " + Table + "' FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES"; 

       MySqlCommand cmd = new MySqlCommand(Query, mySqlConnection); 

       cmd.ExecuteNonQuery(); 

      } 

      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
     } 
Questions connexes