Ошибка:
Код: Выделить всё
CsvHelper.ReaderException: 'No header record was found.
IReader state:
ColumnCount: 0
CurrentIndex: -1
HeaderRecord:
Код: Выделить всё
csv.ReadHeader();
Среди некоторых проблем, которые я пытался исправить, были написания различных способов прочитайте файл (например, TextReader), который по-прежнему будет работать с аналогичным синтаксисом и записью
Код: Выделить всё
CsvReader csv = new CsvReader(reader, new CsvConfiguration(CultureInfo.InvariantCulture) {Delimiter = ";", HasHeaderRecord = true });
Код: Выделить всё
CsvReader csv = new CsvReader(reader, CultureInfo.InvariantCulture);
код:
Код: Выделить всё
private CsvReader ReadCSV(string pathString)
{
try
{
var reader = new StreamReader(pathString);
CsvReader csv = new CsvReader(reader, new CsvConfiguration(CultureInfo.InvariantCulture) { Delimiter = ";", HasHeaderRecord = true });
return csv;
}
catch (FileNotFoundException)
{
MessageBox.Show("File not found. Please check the entered file path.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
catch (Exception ex)
{
MessageBox.Show("An error occurred while reading the CSV file: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
return null;
}
private void toSqlButton_Click(object sender, EventArgs e)
{
string sqlConnection = "Data Source=VERYCOOLDATASOURCE\\SQLEXPRESS;Initial Catalog=VeryCoolDB;Integrated Security=True";
CsvReader csv = ReadCSV(pathInputTextBox.Text);
using(SqlConnection sqlconn = new SqlConnection(sqlConnection))
{
// Get CSV column names for comparison
csv.ReadHeader();
List csvColumns = csv.HeaderRecord.ToList() ?? new List();
// Get SQL column names for comparison
List sqlColumns = GetSQLColumns(sqlConnection, $"SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '{tableInputTextBox.Text}'");
// Compare columns
if (csvColumns.All(sqlColumns.Contains) && csvColumns.Count == sqlColumns.Count)
{
try
{
sqlconn.Open();
using (SqlTransaction sqltrans = sqlconn.BeginTransaction())
using (SqlBulkCopy sqlcopy = new SqlBulkCopy(sqlconn, SqlBulkCopyOptions.KeepIdentity, sqltrans))
{
sqlcopy.DestinationTableName = tableInputTextBox.Text;
CsvDataReader csvdata = new CsvDataReader(csv);
sqlcopy.WriteToServer(csvdata);
sqltrans.Commit();
}
sqlconn.Close();
}
catch (Exception ex)
{
MessageBox.Show("An error occurred while writing the data: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
else
{
MessageBox.Show("Columns of the CSV file and columns of the SQL table do not match.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
static List GetSQLColumns(string connectionString, string query)
{
List columns = new List();
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand(query, connection);
connection.Open();
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
columns.Add(reader["COLUMN_NAME"].ToString());
}
reader.Close();
connection.Close();
}
return columns;
}
Код: Выделить всё
mitid; vname; nname; gehalt; geburtsdatum
5; bingus; bongus; 1223.23; 2010-01-01;
6; bongus; bingus; 1223.23; 2010-01-01;
C:\Users\MALA\Desktop\AppendExcelTest.csv
Подробнее здесь: https://stackoverflow.com/questions/784 ... d-csv-file
Мобильная версия