Гость
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Завесил IBExpert импортом данных / 19 сообщений из 19, страница 1 из 1
26.11.2015, 16:58
    #39114237
o_v_a
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Завесил IBExpert импортом данных
... даже на двух компах

Пытался засосать в новую таблицу мастером импорта данных (разделитель полей в файле '>') справочник ОКАТО.
(ссылка на архив с текстовым файлом https://yadi.sk/d/jHwpkMRqkkixX)

Вырезка из первых 20 строк закачивается нормально. А целиком (300 с чем-то тыс записей) висит уже восьмой час.
Процесс выжрал одно ядро полностью и не откликается.

Версия IBExpert не самая последняя - снапшот 6.6.2015
Будет время - проверю на последнем. Но не сегодня.


--
"И это пройдет"
...
Рейтинг: 0 / 0
26.11.2015, 17:16
    #39114248
o_v_a
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Завесил IBExpert импортом данных
Завис где-то внутри себя... Остановка сервера и разрыв коннекта не повлияли на отвис, статистика запроса на вставку данных нулевая.

Виснет сразу мастер Инструменты - Import data
после указания текстового файла с данными. Не сказать, что и много - 24 Мбайта...
Выжимка из 20 строк открывается и импортируется нормально.

Попробовал через IBEBlock - тоже самое. Висит. Вставок нет ни одной.
...
Рейтинг: 0 / 0
26.11.2015, 17:22
    #39114255
o_v_a
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Завесил IBExpert импортом данных
Виснет и этот вот IBEBlock (создан самим IBExpert'ом в мастере импорта при работе с маленькой выжимкой из 20 первых строк)
Firebird 2.5.5 локально на Windows 7 32x, IBExpert свежий 2015.11.19.2
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
execute ibeblock
as
begin
  cbb = 'execute ibeblock (RecCount variant)
         as
         begin
           if (ibec_Mod(RecCount, 100) = 0) then
             ibec_Progress(RecCount || '' records imported.'');
         end;';
  
  DB = ibec_CreateConnection(__ctFirebird, 'DBName="D:\BASES\ORE.FDB";
                                            ClientLib=gds32.dll;
                                            User=SYSDBA; Password=mypassword; Names=WIN1251; SqlDialect=3;');
  try
    ibec_UseConnection(DB);
  
    -- Creating target table
    execute statement 'CREATE TABLE A_OKATO (
                           FIELD1 VARCHAR(30),
                           FIELD2 VARCHAR(30),
                           FIELD3 VARCHAR(30),
                           FIELD4 VARCHAR(30),
                           FIELD5 VARCHAR(30),
                           FIELD6 VARCHAR(30),
                           FIELD7 VARCHAR(30),
                           FIELD8 VARCHAR(30),
                           FIELD9 VARCHAR(30),
                           FIELD10 VARCHAR(30),
                           FIELD11 VARCHAR(30),
                           FIELD12 VARCHAR(30),
                           FIELD13 VARCHAR(30),
                           FIELD14 VARCHAR(30),
                           FIELD15 VARCHAR(30))';
    commit;
  
    Res = ibec_ImportData(DB, 'A_OKATO', __impText, 'K:\WORK\ОКАТО\1bOKT27715.txt', '',
                          'RowFirst=1; RowLast=200;
                           DateOrder=DMY; DateSeparator="."; TimeSeparator=":"; DecimalSeparator=","; TrimStrings;
                           CSVDelimiter=">"; StringQualifier=DoubleQuote; RecordSeparator=CRLF;', '', cbb);
  
    if (Res is not null) then
      ibec_ShowMessage(Res || ' records were imported successfully.');
  finally
    ibec_CloseConnection(DB);
  end;

end

...
Рейтинг: 0 / 0
27.11.2015, 07:55
    #39114574
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Завесил IBExpert импортом данных
У тебя разделитель записей неправильно указан - CRLF. А там просто LF. Вот поэтому и виснет, скорее всего.
Я импорт без проблем запустил, данные импортируются.
...
Рейтинг: 0 / 0
27.11.2015, 09:32
    #39114611
o_v_a
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Завесил IBExpert импортом данных
Фуууу...
"Вельми понеже" (c)
А я уж подумал, что всё плохо. Благодарю! Получилось!
...
Рейтинг: 0 / 0
27.11.2015, 10:47
    #39114673
o_v_a
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Завесил IBExpert импортом данных
Не всё...
Вот эта строка не заливается корректно
272158>29213818000>10678>>2>13>Сельские населенные пункты находящиеся в подчинении сельсовета "Восход" пс/">>>26.09.2005>96>26.09.2005>96>H>
...
Рейтинг: 0 / 0
27.11.2015, 10:49
    #39114675
o_v_a
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Завесил IBExpert импортом данных
Как-то некорректно тэг отрисовал... В общем, строка с 272158 в первом поле не обрабатывается корректно.
...
Рейтинг: 0 / 0
27.11.2015, 10:56
    #39114684
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Завесил IBExpert импортом данных
В чем некорректность выражается?
...
Рейтинг: 0 / 0
27.11.2015, 11:08
    #39114693
o_v_a
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Завесил IBExpert импортом данных
В том, что 7-ым полем (названием) парсинг строки завершается. 8-е и последующие поля сливаются с 7-ым.
Это уже в preview видно в мастере Импорта.

Седьмое поле получается такое:
Сельские населенные пункты, находящиеся в подчинении сельсовета "Восход" пс/">>>26.09.2005>96>26.09.2005>96>H>
то есть последующие поля не отделяются при наличии, казалось бы, разделителя ">"
...
Рейтинг: 0 / 0
27.11.2015, 11:11
    #39114697
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Завесил IBExpert импортом данных
А двойные кавычки у тебя что там делают при выставленном StringQualifier=DoubleQuote?
...
Рейтинг: 0 / 0
27.11.2015, 11:14
    #39114702
o_v_a
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Завесил IBExpert импортом данных
Возможно, что-то с обработкой пары символов
/"

Изменяя первичные данные как "Восход" пс/ вместо "Восход" пс/" (удаляя кавычку закрывающую) все проходит.

Также помогает назначение в None параметра Text options - String qualifier
...
Рейтинг: 0 / 0
27.11.2015, 11:16
    #39114705
o_v_a
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Завесил IBExpert импортом данных
Скорее всего, ССЗБ :)
Нефиг при наличии двойных кавычек String qualifier ставить = "дабл квота"
...
Рейтинг: 0 / 0
27.11.2015, 11:21
    #39114708
o_v_a
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Завесил IBExpert импортом данных
И всё же хотелось бы понять глубинный смысл параметров
Records separator
и
String qualifier
...
Рейтинг: 0 / 0
27.11.2015, 13:29
    #39114860
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Завесил IBExpert импортом данных
o_v_aИ всё же хотелось бы понять глубинный смысл параметров
Records separator
и
String qualifier

Ну, не знаю, как это еще можно объяснить...
...
Рейтинг: 0 / 0
27.11.2015, 14:29
    #39114925
o_v_a
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Завесил IBExpert импортом данных
Ну как... Вот задал я разделителем записей LF
И вдруг выясняется, что надо было обратить внимание и на String qualifier тоже.
То есть при известной комбинации значений этих параметров я и затеял эту тему, заблудившись в двух соснах.
Как они в спарке работают? Что за чем анализируется?
...
Рейтинг: 0 / 0
27.11.2015, 14:45
    #39114951
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Завесил IBExpert импортом данных
o_v_aНу как... Вот задал я разделителем записей LF
И вдруг выясняется, что надо было обратить внимание и на String qualifier тоже.
То есть при известной комбинации значений этих параметров я и затеял эту тему, заблудившись в двух соснах.
Как они в спарке работают? Что за чем анализируется?

Сначала выделяется запись, затем из нее выделяются значения полей. Они как бы и не связаны, эти два параметра.
...
Рейтинг: 0 / 0
27.11.2015, 15:19
    #39114992
o_v_a
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Завесил IBExpert импортом данных
Не связаны... Хорошо.
А почему тогда обработка записей прекратилась на 272158 в моём случае? Что пошло не так?

String qualifier - это что? К слову, тут про это ни слова.

В моём примере выше :
Records separator = 'LF'
Поля разделяются разделителем = '>'
String qualifier = double quotes

Каким образом и в какой момент вмешался String qualifier при обработке строки 272158 и не есть ли ошибка то, что обработка этой и вставка последующих записей прекратилась?
...
Рейтинг: 0 / 0
27.11.2015, 16:08
    #39115047
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Завесил IBExpert импортом данных
o_v_aКаким образом и в какой момент вмешался String qualifier при обработке строки 272158 и не есть ли ошибка то, что обработка этой и вставка последующих записей прекратилась?

String qualifier - это кавычки, в которые может быть заключена строка и которые нужно убрать с начала и с конца, а две последовательные кавычки в середине заменить на одну.
Соответственно, на выделении очередного значения из записи что-то идет не так, потому что данные некорректны (с учетом того, что в качестве string qualifier указана двойная кавычка).
Ошибка там, может, и есть, но некорректность данных это никак не отменяет.
...
Рейтинг: 0 / 0
30.11.2015, 10:10
    #39116073
o_v_a
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Завесил IBExpert импортом данных
Ессессно.
Теперь всё ясно. Благодарю. Можно закрывать.
...
Рейтинг: 0 / 0
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Завесил IBExpert импортом данных / 19 сообщений из 19, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]