Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Импорт 2 гига текста в MSSQL, как максимально быстро? 
:(
    Опции темы
Darksquall
  Дата 5.4.2006, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 22.1.2004
Где: Москва

Репутация: нет
Всего: 4



Есть текстовый файл 2 гига, нужно залить его в БД на MSSQL, в виде одной таблицы, без нормализации.
Как максимально быстро это сделать?
Пробовал средствами Импорта в Энтерпрайз менеджер,но он ошибки не обрабатывает, например если в поле int будет текст то глюк происходит, если писать через ADO из DELPHI по одной записи то долго получаеться, говоярят есть еще способы, но пока не нашел, кто что знает научите smile


--------------------
PM WWW ICQ   Вверх
Vit
Дата 5.4.2006, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



Delphi тут не при чём (во всяком случае "быстро" и "при помощи клиентского приложения" понятия несовместимые даже теоретически), максимально быстро это делается припомощи запроса Bulk Insert - синтаксис и примеры смотреть в справке по MS SQL Server. Сначала залить, потом отлавливать ошибки, можно например залить всё в таблицу текстовыми полями, а уж потом готовую таблицу обрабатывать на наличие ошибок. Если файл в формате csv то можно его либо подключить как внешний сервер и копировать обычным запросом, либо использовать DTS


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Darksquall
Дата 6.4.2006, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 22.1.2004
Где: Москва

Репутация: нет
Всего: 4



Vit благодарю,

пробую запрос в Query Analizer

Код

if OBJECT_ID('DS.dbo.Data2005') IS NULL
begin
CREATE TABLE [DS].[dbo].[Data2005] (
[Код] varchar (255) NULL, 
[Наименование] varchar (255) NULL, 
[Статистическая стоимость товара] float NULL, 
[Вес нетто кг] float NULL,
[Направление перемещения] varchar (255) NULL, 
[Код страны] varchar (255) NULL,
[Номер та] varchar (255) NULL, 
[Количество товара в дополнительной единице измерения] float NULL)
end
ELSE
begin
Drop table [DS].[dbo].[Data2005]
CREATE TABLE [DS].[dbo].[Data2005] (
[Код] varchar (255) NULL, 
[Наименование] varchar (255) NULL, 
[Статистическая стоимость товара] float NULL, 
[Вес нетто кг] float NULL,
[Направление перемещения] varchar (255) NULL, 
[Код страны] varchar (255) NULL,
[Номер та] varchar (255) NULL, 
[Количество товара в дополнительной единице измерения] float NULL)
end
BULK INSERT [DS].[dbo].[Data2005] FROM 'c:\CODEFAM\2005all\bck\20053.txt4Bulk' WITH (CODEPAGE = 'ACP',KEEPNULLS,FIELDTERMINATOR = '|');

, минут через 10ть останавливаеться,пробую через клиента,
вот так
Код

form1.ADOQuery3.SQl.Clear;
form1.ADOQuery3.CommandTimeout:=1000;
form1.ADOQuery3.SQL.Add('BULK INSERT [DS].[dbo].[Data2005] FROM '''+FilenameEdit18.FileName+''' WITH'
+'(CODEPAGE = ''ACP'','
+'KEEPNULLS,'
+'FIELDTERMINATOR = ''|'');');
form1.ADOQuery3.ExecSQL;
form1.ADOQuery3.close;

через определенное время появляеться
Ошибка (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.), на маленьких файлах естественно работает.
Таймаут установил побольше вроде из за него не может.
Т.е. одна и та же ошибка,может можно ему как то это место выделить?.

что может быть? че т не могу найти,что за ошибка.

Это сообщение отредактировал(а) Darksquall - 6.4.2006, 19:08


--------------------
PM WWW ICQ   Вверх
Vit
Дата 6.4.2006, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



Не хватает места для файла базы данных. Возможные причины:

1. Стоит ограничение на рост файла в свойствах базы данных
2. Нет места на диске.
3. Используется FAT32 и размер файла переваливает за 4 Gb


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Darksquall
Дата 6.4.2006, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 22.1.2004
Где: Москва

Репутация: нет
Всего: 4



Цитата(Vit @ 6.4.2006, 21:05)
Не хватает места для файла базы данных. Возможные причины:

1. Стоит ограничение на рост файла в свойствах базы данных
2. Нет места на диске.
3. Используется FAT32 и размер файла переваливает за 4 Gb

NTFS стоит.
Место на диске есть.

Я так думаю дело вот в чем, у меня MSDE стоит, кажись там ограничение на размер БД, он мне больше 2х гигов не дает сделать, говорит Licensed limit 2 гига. Обидно :-(


--------------------
PM WWW ICQ   Вверх
Vit
Дата 6.4.2006, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



Ааа... да есть такое....


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Darksquall
Дата 15.4.2006, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 22.1.2004
Где: Москва

Репутация: нет
Всего: 4



Продолжение траблов,
поставил нормальную версию MSSQL, бд загружаеться нормально, т.е. 10 млн записей (без индексов) 18минут, с ключем и одним индексом 1 час.

Теперь хочу сделать поиск с FullText или contains(*,'Поле'), т.е. быстрый поиск по словам.
запрос типа

Код

Select * from [DS].[dbo].[Data2005] where contains(*,'Автомобиль');


выдает пустую таблицу, причем даже ошибок нет. Full text search включена c помощю wizarda каталог для слов создан.Язык для поля установлен Neutral,т.к. MSSQL не способен строить Full text search индексы для русских слов.

что может быть? почему таблица пустая?


--------------------
PM WWW ICQ   Вверх
Vit
Дата 16.4.2006, 02:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



А на фига там полнотекстовые индексы если нет текстовых полей? Обычный поиск будет работать лучше. А для распознавания русских слов нужно правильная установка collation. Кроме того на форуме есть правила, о том что каждый новый впрос задают в новом топике, к тому же там где он по теме. В данном случае вопрос к Дельфи не имеет ни малейшего отношения




--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Darksquall
Дата 16.4.2006, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 22.1.2004
Где: Москва

Репутация: нет
Всего: 4



Ок, перенесу вопрос в базы данных, varchar не тесктовое поле? 


--------------------
PM WWW ICQ   Вверх
Vit
Дата 16.4.2006, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



Varchar - это строка. Текстовые поля - Text - у них проблема такая что обычными способами в них искать ничего нельзя, поэтому и используются полнотекстовые индексы 


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0994 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.