private string BuildSqlCommand()
{
StringBuilder sql = new StringBuilder("LOAD DATA ");
if (Priority == MySqlBulkLoaderPriority.Low)
sql.Append("LOW_PRIORITY ");
else if (Priority == MySqlBulkLoaderPriority.Concurrent)
sql.Append("CONCURRENT ");
if (Local)
sql.Append("LOCAL ");
sql.Append("INFILE ");
if (Platform.DirectorySeparatorChar == '\\')
sql.AppendFormat("'{0}' ", FileName.Replace(@"\", @"\\"));
else
sql.AppendFormat("'{0}' ", FileName);
if (ConflictOption == MySqlBulkLoaderConflictOption.Ignore)
sql.Append("IGNORE ");
else if (ConflictOption == MySqlBulkLoaderConflictOption.Replace)
sql.Append("REPLACE ");
sql.AppendFormat("INTO TABLE {0} ", TableName);
if (CharacterSet != null)
sql.AppendFormat("CHARACTER SET {0} ", CharacterSet);
StringBuilder optionSql = new StringBuilder(String.Empty);
if (FieldTerminator != defaultFieldTerminator)
optionSql.AppendFormat("TERMINATED BY '{0}' ", FieldTerminator);
if (FieldQuotationCharacter != Char.MinValue)
optionSql.AppendFormat("{0} ENCLOSED BY '{1}' ",
FieldQuotationOptional ? "OPTIONALLY" : "", FieldQuotationCharacter);
if (EscapeCharacter != defaultEscapeCharacter &&
EscapeCharacter != Char.MinValue)
optionSql.AppendFormat("ESCAPED BY '{0}' ", EscapeCharacter);
if (optionSql.Length > 0)
sql.AppendFormat("FIELDS {0}", optionSql.ToString());
optionSql = new StringBuilder(String.Empty);
if (LinePrefix != null && LinePrefix.Length > 0)
optionSql.AppendFormat("STARTING BY '{0}' ", LinePrefix);
if (LineTerminator != defaultLineTerminator)
optionSql.AppendFormat("TERMINATED BY '{0}' ", LineTerminator);
if (optionSql.Length > 0)
sql.AppendFormat("LINES {0}", optionSql.ToString());
if (NumberOfLinesToSkip > 0)
sql.AppendFormat("IGNORE {0} LINES ", NumberOfLinesToSkip);
if (Columns.Count > 0)
{
sql.Append("(");
sql.Append(Columns[0]);
for (int i = 1; i < Columns.Count; i++)
sql.AppendFormat(",{0}", Columns[i]);
sql.Append(") ");
}
if (Expressions.Count > 0)
{
sql.Append("SET ");
sql.Append(Expressions[0]);
for (int i = 1; i < Expressions.Count; i++)
sql.AppendFormat(",{0}", Expressions[i]);
}
return sql.ToString();
}
}