Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - Работа с *.CSV через OleDbConnection

Ответить
Настройки темы
.NET - Работа с *.CSV через OleDbConnection

В Поисках Истины


Сообщения: 802
Благодарности: 135


Конфигурация

Профиль | Отправить PM | Цитировать


Здравствуйте.
Есть файл *.csv - разделитель в нем (;). Есть кусок кода:
Код: Выделить весь код
string ExcelConnectionString = string.Format(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0}; Extended Properties=""text;HDR=YES;FMT=Delimited""", "Путь к файлу");
using (OleDbConnection odb = new OleDbConnection(ExcelConnectionString))
                    {
                        string SheetName = Path.GetFileNameWithoutExtension("Файл");
                        OleDbCommand command = new OleDbCommand("Select * FROM [" + Path.GetFileName("Файл") + "]", odb);
                        odb.Open();
                        using (DbDataReader dr = command.ExecuteReader())
                        {
                            string SqlConnectionString = "Параметры подключения";
                            using (SqlBulkCopy bulk = new SqlBulkCopy(SqlConnectionString))
                            {
                                bulk.DestinationTableName = "dbo.Таблица";
                                bulk.WriteToServer(dr);
                            }
                        }
                    }
На Windows XP все работало отлично. Теперь Windows 7 - не работает. Столбцы не разделяются. Все импортируется в первый столбец.
Пробовал менять Delimited на Delimited( - не помогает.

Помогите разобраться.
Спасибо.

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}


Отправлено: 16:53, 21-08-2013

 

Старожил


Сообщения: 435
Благодарности: 63

Профиль | Отправить PM | Цитировать


Похоже программа не понимает, что разделитель ;
Копайте в эту сторону

-------
black-eric.livejournal.com


Отправлено: 21:07, 21-08-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


В Поисках Истины


Сообщения: 802
Благодарности: 135

Профиль | Отправить PM | Цитировать


Цитата BlackEric:
Похоже программа не понимает, что разделитель ; »
Да вы что, я то и не догадался

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}


Отправлено: 08:27, 22-08-2013 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата LilLoco:
Пробовал менять Delimited на Delimited( - не помогает. »
Очевидно, на «Delimited(;)» — не установили флажок «Отключить смайлики в тексте» .

LilLoco, а что на данной машине в разделе реестра «HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Text», параметре «Format»? Сам сомневаюсь, что в этом дело — Вы ведь в самой строке подключения указывали разделитель, и без толку.

Отправлено: 13:37, 22-08-2013 | #4


В Поисках Истины


Сообщения: 802
Благодарности: 135

Профиль | Отправить PM | Цитировать


Цитата Iska:
«Отключить смайлики в тексте» »
Да! Забыл про эту возможность.

Цитата Iska:
а что на данной машине в разделе реестра «HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Text» »
Проблема в том, что такого раздела не сущесвует. Да и плюс ко всему, права не дадут изменить, чтобы там не было.

Когда искал различную информацию по данному вопросу, натыкался на слова, что Jet не работает на системах Windows 7, .. x64. Но при этом у всех возникает ошибка о не существовании Jet. У меня же вставка происходит, но криво.

-------

Попытался сейчас проделать это через ACE.OLEDB - то же самое... Все в одну строку.
--------------
Ради эксперимента заменил разделитель с ; на Табулятор, эффекта нет. Разделитель никак не хочет определяться.

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}


Последний раз редактировалось LilLoco, 23-08-2013 в 12:05. Причина: Добавлено


Отправлено: 14:46, 22-08-2013 | #5


В Поисках Истины


Сообщения: 802
Благодарности: 135

Профиль | Отправить PM | Цитировать


Попробовал реализовать через Microsoft Text ODBC Driver - безуспешно. Все в одной колонке.
Больше вообще нет мыслей по этому поводу. А решить вопрос необходимо.
-----------------------------------------------------------------------------------------------------------------
Для 64битных систем ветка реестра отличается от 32х. Расположено здесь: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\Text. По умолчанию стоял параметр CSVDelimited, не без труда, заменил на Delimited( - заработало.
Все же вопрос остается не совсем решенным, почему работа программы никак не реагирует на разделитель задаваемый в строке подключения...

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}


Последний раз редактировалось LilLoco, 26-08-2013 в 11:02.


Отправлено: 08:58, 26-08-2013 | #6


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата LilLoco:
Для 64битных систем ветка реестра отличается от 32х. Расположено здесь: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\Text »
В x64 среде это и есть указанный выше раздел для x86 приложений.

А с ConnectionString, действительно, непонятно — почему так. Разберётесь — не сочтите за труд, отпишитесь.

Отправлено: 03:55, 27-08-2013 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - Работа с *.CSV через OleDbConnection

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
2008 R2 - Работа eMule через RemoteApp FreshMen85 Windows Server 2008/2008 R2 0 25-07-2012 13:05
RDP/Citrix/Term - [решено] Работа через интернет. Performance M Сетевые технологии 34 15-11-2011 15:31
.NET - Работа браузеров через прокси. LilLoco Программирование и базы данных 9 02-06-2011 13:36
.NET - Строка соединения OleDbConnection (C#) LilLoco Программирование и базы данных 2 16-02-2011 07:22
Прочее - работа с интернетом через шлюз в WinXP chernovdn Сетевые технологии 12 08-09-2009 16:11




 
Переход