|
v7: Запись в DBF таблицу | ☑ | ||
---|---|---|---|---|
0
vsy
21.03.24
✎
12:22
|
Добрый день всем. Знатоки подскажите. Есть задача записать десятки тысяч строк в таблицу DBF. Хотелось бы одним запросом. Насколько я знаю у Visual FoxPro есть функция ExicutScript(), но при использовании выходит ошибка. Видимо слишком много аргументов. Кто подскажет, сколько переваривает за раз. Или может кто-то предложит какой нибудь способ, чтобы сократить время записи.
|
|||
1
Андрей_Андреич
naïve
21.03.24
✎
12:23
|
Убить индекс, записать, проиндексировать
|
|||
2
Irbis
21.03.24
✎
12:24
|
XBase чем не вариант, если надо непосредственно из 1С. А ручками и Excel в помощь.
|
|||
3
vsy
21.03.24
✎
12:25
|
Как записывать по одной записи что ли.
|
|||
4
Волшебник
21.03.24
✎
12:27
|
ExicutScript ? чё, серьёзно?
Запросом записать? чё, реально? |
|||
5
Irbis
21.03.24
✎
12:28
|
(3) Ну, да. 10 тысяч — это ни о чём, все равно до записи в файл всё в память пишется. Запись файла на диск — отдельная песня. Вот когда надо пару миллионов строк записать приходится трудиться.
|
|||
7
vsy
21.03.24
✎
12:34
|
В том то и дело, что строк может быть и 10000000. Хотелось быстро записать. ради эксперимента попробовал записать по одному запросу 10000 строк, ушло ~15 сек. Это очень медленно.
|
|||
8
vsy
21.03.24
✎
12:40
|
(4) Я имел ввиду EXECSCRIPT.
|
|||
9
Волшебник
21.03.24
✎
12:41
|
(7) Пишите на диск SSD NVMe PCI Express 4.0
|
|||
10
Волшебник
21.03.24
✎
12:41
|
(7) Что в строках? Откуда миллион записей DBF?
|
|||
11
Garykom
гуру
21.03.24
✎
12:43
|
(0) Это легко
Достаточно изучить http://www.autopark.ru/ASBProgrammerGuide/dbfstruc.htm И банально писать что надо по байтикам в файлик |
|||
12
Irbis
21.03.24
✎
12:43
|
(7) Вы уж определитесь, или 10 тыс. или 10 млн, применяемые средства уже могут серьёзно отличаться. В дополнение к (9) и желательно не писать "по сети", а то такое частенько бывает. нарежут админы шару, а она в другой стойке или в другом городе вообще.
|
|||
13
Garykom
гуру
21.03.24
✎
12:45
|
Хотя стандартно предлагаю воспользоваться микросервисом на Go
https://github.com/Valentin-Kaiser/go-dbase Он простейший https://github.com/Valentin-Kaiser/go-dbase/blob/main/examples/write/write.go |
|||
14
vsy
21.03.24
✎
12:46
|
Посмотрел файлик из которого нужно сделать запросы, выходит порядка 20000 запросов. С миллионами погорячился.
|
|||
15
Garykom
гуру
21.03.24
✎
12:56
|
(14) еще во времена 1С 8.1 писал в файлики dbf миллионы записей
и ничего, за полчасика справлялось сейчас думаю будут минуты а для 20тыщ всего секунды |
|||
16
vsy
21.03.24
✎
12:57
|
Не хотелось городить огород. Семерка уже использует фоксовский драйвер, поэтому пусть он и записывает в стороннюю DBF таблицу.
|
|||
17
Garykom
гуру
21.03.24
✎
13:04
|
(16)
Семерка уже использует фоксовский драйвер
чего? |
|||
18
АгентБезопасной Нацио
21.03.24
✎
13:13
|
(16) если в вашей семерке уже подключен фоксовский драйвер, и есть все данные - то запишите их прямым запросом :-)
(17) посмотри его темы, он цеплял фокса. |
|||
19
Garykom
гуру
21.03.24
✎
13:18
|
(18) через ADO что ли?
|
|||
20
vsy
21.03.24
✎
13:35
|
(18) Да.
|
|||
21
vsy
21.03.24
✎
13:36
|
(18) Я так и делаю.
|
|||
22
Garykom
гуру
21.03.24
✎
13:57
|
Интересно сравнить скорость
100% что через ADO в один поток А вот своим методом можно в много потоков фигачить в разные файлы а затем их соединить |
|||
23
Волшебник
21.03.24
✎
14:15
|
(14) не надо применять слово "запросы" к записям и строчкам данных
|
|||
24
Волшебник
21.03.24
✎
14:17
|
(18) Если подключить DBF через задницу и кучу прослоек, то неудивительно, что будет тормозить. Используйте встроенные средства для работы с DBF (xBase)
|
|||
25
MWWRuza
гуру
21.03.24
✎
14:36
|
xBase - ну куда уж более чем штатный способ. И 20 000 - для него вообще не задача. Как будут миллионы отрабатывать, х.з... Но, 80 000 я писал, нормально, время не засекал - не было необходимости, как-то показалось адекватно быстро, засекать время и извращаться с ускорением как-то и не пришло в голову.
|
|||
26
Garykom
гуру
21.03.24
✎
14:37
|
(25) Через XBase встроенный есть куча ограничений
Например character поля с непечатными символами как id |
|||
27
Garykom
гуру
21.03.24
✎
14:38
|
(26)+ тупейшая трабла с ограничением на имя (длина) файла dbf
|
|||
28
Irbis
21.03.24
✎
14:40
|
(27) А кто потом мешает переименовать наследство православного MS DOsa
|
|||
29
Злопчинский
21.03.24
✎
16:58
|
Длинные имена имеют соответствующие по формату 8.3, можно через короткие имена работать
|
|||
30
Garykom
гуру
21.03.24
✎
17:57
|
(29) зависит от файловой системы это ))
|
|||
31
Djelf
21.03.24
✎
18:11
|
Мы ТЗ не знаем. Теоретизировать без ТЗ можно до бесконечности.
|
|||
32
Волшебник
21.03.24
✎
18:18
|
(31) И не было ответа на (10)
|
|||
33
MWWRuza
гуру
21.03.24
✎
19:00
|
(32) Да нет там у него никаких миллионов... Какие-то несчастные 20 000, в (14) ответ от него был.
|
|||
34
Волшебник
21.03.24
✎
19:23
|
(33) Он не ответил на вопрос о характере записей. ЧТО в этом файле
|
|||
35
Волшебник
21.03.24
✎
19:25
|
Когда мисту воспринимают чисто технически как "волшебный форум" по любому вопросу, то сильно ошибаются. Здешние спецы могут пройтись вверх по уровням абстракции и объяснить Вам, почему Вы делаете всё неправильно и как надо делать правильнее. Но для этого нужно понятно объяснить смысл задачи, ответить на вопросы ЧТО и ЗАЧЕМ?
|
|||
36
Irbis
21.03.24
✎
20:06
|
Ещё лучше объяснят почему это делать не надо
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |