| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Базы данных под .NET > из Excel в Access на C# |
| Автор: tatbesidovska 19.11.2010, 10:06 |
| Подскажите, пожалуйста! Как можно на C# реализовать такой пример Пример: есть текстовый файл txt с данными, который надо перенести в базу данных: 1203 Иванов 12000 1402 сидоров 5000 в результате экспорта этих данных должна получится база с полями: ТБН ФИО Сумма 1203 Иванов 12000 1402 сидоров 5000 Заранее спасибо! |
| Автор: Экскалупатор 19.11.2010, 12:40 |
| а к чему ексель в названии указан? |
| Автор: tatbesidovska 19.11.2010, 13:24 |
| ой, извиняюсь, я перепутала, файл не текстовый, а xls |
| Автор: mrbrooks 19.11.2010, 13:48 | ||
самый не продуктивный подход. в windows полным полно драйверов с помощью которых можно работать с любым удобоваримым файлом как с БД. А уж работа с txt, xls, csv - это нынче не должно быть проблемой. проще простого. http://connectionstrings.com/excel |
| Автор: MasterOfCode 23.11.2010, 13:06 | ||||
Есть стандартное решение работы с файлом такого вида:
|
| Автор: mrbrooks 23.11.2010, 13:11 | ||
это смотря что надо делать с блоком:
|
| Автор: MasterOfCode 23.11.2010, 13:37 |
Этот блок, как набор параметров описания исследования. Его нужно распарсить и хранить значения, в зависимости от задач загрузить в БД или сохранить в файл. Таблица ~ASCII как значения параметров исследования приборами. |
| Автор: mrbrooks 23.11.2010, 15:01 |
| ок. в данном случае, как я понимаю, заголовок является управляющей логикой. его же ты в БД или иное хранилище не помещаешь. а вот то что идет ниже вполне структурированные данные которые отлично импортируются через имеющиеся дрова. все эти вещи хорошо настраиваются. пойми - я же тебя не в чем не убеждаю и не упрекаю - хочешь писать парсеры - да ради Бога просто я на этом деле собаку съел. был случай когда мне в БД приходилось раз в три минуты вставлять данные из шести метрового текстового файла, кстати очень схожей конструкции. в данном случае пока бы я его парсил очень могла бы возникнуть очередь. |
| Автор: MasterOfCode 24.11.2010, 08:00 | ||
Как раз помещаю. Я писал парсер который за доли секунд этот файл считывает. Файлы там в среднем по 2,5-3 Мб. Бывают и по 20. |
| Автор: mrbrooks 24.11.2010, 08:59 |
ок. в твоем случае конечно нужно не стандартное решение. но для TC вполне достаточно и стандартного. а 20 Mb текстовые файлы - это очень круто. |
| Автор: MasterOfCode 24.11.2010, 09:06 |
Такова специфика. В нефтяную скважину опускают прибор, и он снимает показания каждые 10 см. И так на протяжении 3-3,5 км. При одном исследовании могут проводить 20-25 спуск-подъемов разных приборов. И все это пишут в один файл. Вот так. А мы потом их считывай и в БД загружай. В среднем конечно они не такие огромные, но встречаются и такие, не редко. |
| Автор: mrbrooks 24.11.2010, 09:15 | ||
кстати - это стандартный костыль - для связи промышленных устройств с хранилищами данных. хотя встречал уже девайсы которые сами могут писать в субд( либо по Ethernet, либо по Wi-Fi). хотя конечно это помогает не всегда. думаю нефтяная скважина из этой оперы. |
| Автор: tatbesidovska 24.11.2010, 15:19 |
| Реализовала так: Строка подключения: string _conn = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";", _filename); Запрос: _command.CommandText = @"SELECT * INTO [MS Access;Database=C:\Avans\Tabel.mdb].[Tabel] FROM [Лист1$]"; Проблемка такая: Если на листе Excel были сделаны какие-то изменения, в том числе добавлялись записи, а затем эти записи очищались, а не удалялись, то при переносе в базу данных строки с очищенными данными попадают в базу со значением в поле «0», либо в базу добавляются просто пустые строчки. Как можно прописать в запросе, чтобы выборка данных из листа Excel была по диапазону, ограниченному пустыми строками и столбцами. Можно конечно сделать по определенному диапазону, например написав так:....FROM [Лист1$A1:E35], но к сожалению диапазон может каждый раз меняться. |