| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Базы данных и репортинг > Импорт 2 гига текста в MSSQL |
| Автор: Darksquall 5.4.2006, 18:44 |
| Есть текстовый файл 2 гига, нужно залить его в БД на MSSQL, в виде одной таблицы, без нормализации. Как максимально быстро это сделать? Пробовал средствами Импорта в Энтерпрайз менеджер,но он ошибки не обрабатывает, например если в поле int будет текст то глюк происходит, если писать через ADO из DELPHI по одной записи то долго получаеться, говоярят есть еще способы, но пока не нашел, кто что знает научите |
| Автор: Vit 5.4.2006, 19:40 |
| Delphi тут не при чём (во всяком случае "быстро" и "при помощи клиентского приложения" понятия несовместимые даже теоретически), максимально быстро это делается припомощи запроса Bulk Insert - синтаксис и примеры смотреть в справке по MS SQL Server. Сначала залить, потом отлавливать ошибки, можно например залить всё в таблицу текстовыми полями, а уж потом готовую таблицу обрабатывать на наличие ошибок. Если файл в формате csv то можно его либо подключить как внешний сервер и копировать обычным запросом, либо использовать DTS |
| Автор: Darksquall 6.4.2006, 18:48 | ||||
| Vit благодарю, пробую запрос в Query Analizer
, минут через 10ть останавливаеться,пробую через клиента, вот так
через определенное время появляеться Ошибка (Server: Msg 1105, Level 17, State 2, Line 1 Could not allocate space for object 'Data2005' in database 'DS' because the 'PRIMARY' filegroup is full. The statement has been terminated.), на маленьких файлах естественно работает. Таймаут установил побольше вроде из за него не может. Т.е. одна и та же ошибка,может можно ему как то это место выделить?. что может быть? че т не могу найти,что за ошибка. |
| Автор: Vit 6.4.2006, 21:05 |
| Не хватает места для файла базы данных. Возможные причины: 1. Стоит ограничение на рост файла в свойствах базы данных 2. Нет места на диске. 3. Используется FAT32 и размер файла переваливает за 4 Gb |
| Автор: Darksquall 6.4.2006, 22:51 | ||
NTFS стоит. Место на диске есть. Я так думаю дело вот в чем, у меня MSDE стоит, кажись там ограничение на размер БД, он мне больше 2х гигов не дает сделать, говорит Licensed limit 2 гига. Обидно :-( |
| Автор: Vit 6.4.2006, 22:57 |
| Ааа... да есть такое.... |
| Автор: Darksquall 15.4.2006, 22:04 | ||
| Продолжение траблов, поставил нормальную версию MSSQL, бд загружаеться нормально, т.е. 10 млн записей (без индексов) 18минут, с ключем и одним индексом 1 час. Теперь хочу сделать поиск с FullText или contains(*,'Поле'), т.е. быстрый поиск по словам. запрос типа
выдает пустую таблицу, причем даже ошибок нет. Full text search включена c помощю wizarda каталог для слов создан.Язык для поля установлен Neutral,т.к. MSSQL не способен строить Full text search индексы для русских слов. что может быть? почему таблица пустая? |
| Автор: Vit 16.4.2006, 02:13 |
| А на фига там полнотекстовые индексы если нет текстовых полей? Обычный поиск будет работать лучше. А для распознавания русских слов нужно правильная установка collation. Кроме того на форуме есть правила, о том что каждый новый впрос задают в новом топике, к тому же там где он по теме. В данном случае вопрос к Дельфи не имеет ни малейшего отношения |
| Автор: Darksquall 16.4.2006, 10:26 |
| Ок, перенесу вопрос в базы данных, varchar не тесктовое поле? |
| Автор: Vit 16.4.2006, 14:40 |
| Varchar - это строка. Текстовые поля - Text - у них проблема такая что обычными способами в них искать ничего нельзя, поэтому и используются полнотекстовые индексы |