powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Завесил IBExpert импортом данных
19 сообщений из 19, страница 1 из 1
Завесил IBExpert импортом данных
    #39114237
Фотография o_v_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... даже на двух компах

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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


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