Получение неопределенной ошибки при чтении файла CSV с помощью OleDbDataAdapter

Обновление 1: я думаю, что файл schema.ini неверен. Пожалуйста, обратитесь к приведенному ниже вопросу. Файл (dsTextFile) содержит только одну строку данных, но количество записей равно нулю. Значит, вообще не читает. Это с удалением FMT вообще или с Делими. Я все еще получаю сообщение об ошибке, если FMT исправлен. Итак, как мне создать SCHEMA.ini или убедиться, что schema.ini правильный?

    private bool LoadTextFile(string textFilePath, out string errorInfo) {
        errorInfo = String.Empty;

        try {
            string textFileFolder = (new System.IO.FileInfo(textFilePath)).DirectoryName;
            string textConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;" +
                                            "Data Source=" + textFileFolder + ";" +
                                            "Extended Properties=\"text;HDR=No;FMT=Fixed\";";
            OleDbConnection textConnection = new OleDbConnection(textConnectionString);

            textConnection.Open();

            textFilePath = (new System.IO.FileInfo(textFilePath)).Name;
            string selectCommand = "select * from " + textFilePath;

            OleDbCommand textOpenCommand = new OleDbCommand(selectCommand);
            textOpenCommand.Connection = textConnection;

            OleDbDataAdapter textDataAdapter = new OleDbDataAdapter(textOpenCommand);
            Console.WriteLine("Trying to set textDataAdapter");

            int rows = textDataAdapter.Fill(dsTextFile); //This is where error is coming.

            Console.WriteLine("detail rows being filled");

            textConnection.Close();
            textConnection.Dispose();

            return true;
        }
        catch (Exception ex_load_text_file) {
            Console.WriteLine("error in loadTextFile is " + ex_load_text_file.Message.ToString());
            return false;
        }
    }

Пожалуйста, найдите приведенный выше источник, где я получаю сообщение об ошибке «Не указано» для строки ниже.

UnSpecified Error появляется ниже строки int rows = textDataAdapter.Fill(dsTextFile)

В чем может быть проблема? Я проверил права пользователя на c:\windows\temp, но безуспешно.

Это консольное приложение, и я даже пытался добавить код ниже в app.config, но пока безуспешно.

<system.web>
<identity imperonate = "false"/> </system.web>

Это устаревшее приложение, но оно должно работать на установке Windows Server 2012.


person Anirudh    schedule 15.04.2015    source источник


Ответы (1)


Вы используете FMT=Fixed в строке подключения, если вы не используете schema.ini, измените его на FMT=Delimited, и он будет работать.

i.e.:

string textConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + textFileFolder + ";" +
"Extended Properties=\"text;HDR=No;FMT=Delimited\";";

person Rafael F.    schedule 15.04.2015
comment
Спасибо за информацию. но входной файл, который я читаю, имеет фиксированную длину и не имеет разделителей. Имеет ли это значение здесь? - person Anirudh; 16.04.2015
comment
Я полагаю, вы используете файл schema.ini? - person Rafael F.; 16.04.2015
comment
Да, я использую файл schema.ini. - person Anirudh; 16.04.2015
comment
любые входы? Я не получаю ошибку, как указано в исходном сообщении, если я изменил FMT на разграничение, но я получаю ошибки при дальнейшем анализе данных. - person Anirudh; 16.04.2015
comment
Я думаю, что schema.ini теперь неверен. Файл (dsTextFile) содержит только одну строку данных, но количество записей равно нулю. Значит, вообще не читает. Это с удалением FMT вообще или с Делими. Я все еще получаю сообщение об ошибке, если FMT исправлен. Итак, как мне создать schema.ini или убедиться, что schema.ini правильный? - person Anirudh; 16.04.2015
comment
Попробуйте проверить этот пример schema.ini stackoverflow.com/questions/12259562/ - person Rafael F.; 17.04.2015