OLDB для чтения файла CSV, но он меняет значения - PullRequest
0 голосов
/ 27 января 2011

У меня есть соединение OLDB для чтения файла CSV в набор данных.Теперь в CSV у меня есть столбец типа 3,00 или 15,00 (это сумма в евро), но когда я вызываю метод .Fill в OdbcDataAdapter, он меняет значение на DateTime.Это код, который я использую для чтения CSV и преобразования его в набор данных:

DataSet ds = new DataSet();
            try
            {
                // Creates and opens an ODBC connection
                string strConnString = "Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=" + filePath.Trim() + ";Extensions=asc,csv,tab,txt;Persist Security Info=False";
                string sql_select;
                OdbcConnection conn;
                conn = new OdbcConnection(strConnString.Trim());
                conn.Open();

                //Creates the select command text
                sql_select = "select * from [" + this.fileName.Trim() + "]";

                //Creates the data adapter
                OdbcDataAdapter obj_oledb_da = new OdbcDataAdapter(sql_select, conn);

                //Fills dataset with the records from CSV file
                obj_oledb_da.Fill(ds, "csv");

                //closes the connection
                conn.Close();
            }
            catch (Exception e) //Error
            {
                MessageBox.Show(e.Message, "Error - LoadCSV", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            return ds;

Запись CSV выглядит следующим образом:

2005    2   20  7024    0   0   2900    14  19  0,00    3,00    3,00    0,00    0,00    0,00    15,80   18,80   0,00    0,00    90014   99999998    99999998        0   0   23/02/2005  0   stt     7024    15,80   0,00    N   60376940043 fis

Запись, полученная из набора данныхвыглядит так:

2005    2   20  7024    0   0   2900    14  19  30-12-1899 0:00:00  30-12-1899 15:26:00 30-12-1899 15:26:00 30-12-1899 0:00:00  30-12-1899 0:00:00  30-12-1899 0:00:00  80,33   95,59   30-12-1899 0:00:00  30-12-1899 0:00:00  92705   99999998    99999998        0   0   23-2-2005 0:00:00   0   stt     7024    80,33   30-12-1899 0:00:00  N       fis

Что мне здесь не хватает?Потому что запись DataSet должна быть точно такой же, как запись CSV.Мне нужно преобразовать CSV в DataSet, потому что я не хочу добавлять каждую отдельную строку в базу данных, поэтому я сразу вставляю DataSet в базу данных (это модуль импорта)

Кто мне может помочьс этим?

Заранее спасибо!

1 Ответ

1 голос
/ 27 января 2011

Вы можете рассмотреть возможность использования файла schema.ini, если вы действительно хотите использовать текстовый драйвер для импорта записей.Я думаю, что он импортирует дату и время в соответствии с настройками вашего региона на панели управления:

http://msdn.microsoft.com/en-us/library/ms709353.aspx

Ссылка на эту страницу:

http://zootfroot.blogspot.com/2009/04/parse-csv-files-with-ms-odbc-driver.html

Вам также следует рассмотреть синтаксический анализ файла вручную, что даст вам больше контроля над тем, как интерпретировать поле даты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...