2012-10-11 2 views
4

LOAD DATA INFILE을 sotred 프로 시저로 사용하려고 시도했지만 완료 할 수없는 것처럼 보입니다. 그 때 나는 그렇게 같은 응용 프로그램 자체에 코드를 삽입의 일반적인 방법, 변수 쿼리는 문자열에 저장됩니다변수가있는 LOAD DATA INFILE

conn = new MySqlConnection(connStr); 
conn.Open(); 
MySqlCommand cmd = new MySqlCommand(); 
cmd = conn.CreateCommand(); 
string tableName = getTableName(serverName); 
string query = "LOAD DATA INFILE '" + fileName + "'INTO TABLE "+ tableName +" FIELDS TERMINATED BY '"+colSep+"' ENCLOSED BY '"+colEncap+"' ESCAPED BY '"+colEncap+"'LINES TERMINATED BY '"+colNewLine+"' ("+colUpFormat+");"; 
cmd.CommandText = query; 
cmd.ExecuteNonQuery(); 
conn.Close(); 

생성 된 쿼리,

 LOAD DATA INFILE 'data_file.csv'INTO TABLE tbl_shadowserver_bot_geo FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '"'LINES TERMINATED BY '\n' (timestamp,ip,port,asn,@dummy,@dummy,@dummy,@dummy,@dummy,@dummy,url,agent,@dummy,@dummy,@dummy,@dummy,@dummy,@dummy,@dummy,@dummy,@dummy,@dummy,@dummy); 

을 시도하지만 지금은 프로그램을 실행할 때 프로그램은 내가이 문제를 얻는 방법을 잘 모릅니다 오류 말,

 MySQLException(0x80004005) Parameter @dummy must be defined first. 

을 제공하지만, 내가 MySQL을 동일한 쿼리를 사용할 때 자체가 바로 그것을 잘 작동합니다. 그것은이다,

나도이 문제가 발생
+0

좀 SPAC가 발견 주셔서 감사합니다 값을 @parameter 사용할 수 있도록 연결 문자열에서이 조건

 Allow User Variables=true; 

설정 당신의 쿼리 (.csv'INTO)와 (ESCAPED BY ' "'LINES)에 빠져 있습니다. 원래 검색어의 대소 문자인지 아니면 잘못 입력했는지 확인하십시오. – Nin

+0

안녕하세요, 답장을 보내 주셔서 감사합니다. 문제는 아니 었습니다. :) 해결책을 찾았습니다 –

답변

8

를 사용하여 실행하십시오 질의 :

는 응답 :

0

, 그때 나는 대량 삽입 스크립트를 생성 me..thank 아주 많이 :) 도움이 내가 솔루션 나 자신을 발견 C# .NET 코드

+0

okey .. 고맙습니다. :) 해결책을 시험해 보겠습니다. :) –

+0

확실합니다. 일단 당신이 준 제안을 테스트 완료됩니다. 다시 한 번 감사드립니다 :) –

+1

이것은 사실이 아니므로 LOAD DATA INFILE을 코드에서 사용할 수 있습니다. – nos