powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Экспорт данных в скрипт
34 сообщений из 34, показаны все 2 страниц
Экспорт данных в скрипт
    #39976541
PATRI0T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ДОбрый день. подскажите, как можно из консоли экспортировать результаты select запроса в insert скрипт (как это может делать ibexpert в окошках).
Хотелось бы какое-то решение, использующее isql или что-то типа того..
Нужно для автоматизации кое-какой рутины
...
Рейтинг: 0 / 0
Экспорт данных в скрипт
    #39976545
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Экспорт данных в скрипт
    #39976557
AltHasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster,

IBeScript - лучшая тулза для имп/эксп (imho).
...
Рейтинг: 0 / 0
Экспорт данных в скрипт
    #39976579
Фотография o_v_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например, так
Код: plsql
1.
2.
3.
4.
with SLCT as (
select 1 as FLD1, 2 as FLD2 from rdb$database)
select 'INSERT INTO MYTABLE ( FIELD1, FIELD2) VALUES (' || SLCT.FLD1 || ',' || SLCT.FLD2 ||');'
from SLCT


Скрипт сохранить как script.sql
Скрипт запускать через isql
Код: powershell
1.
isql -i script.sql -o result.sql -u USERNAME -p USERPASS -role USERROLE source_host/port:source_database_path_or_alias



Результат: в result.txt строка
INSERT INTO MYTABLE ( FIELD1, FIELD2) VALUES (1,2);
Этот скрипт потом выполняется на целевой базе
Код: powershell
1.
isql -i result.sql -u USERNAME -p USERPASS -role USERROLE dest_host/port:dest_database_path_or_alias




Использую под линухом в роботах при синхронизации между базами небольших справочников.
...
Рейтинг: 0 / 0
Экспорт данных в скрипт
    #39976604
PATRI0T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
o_v_a, О, спасибо тебе! супер, то что нужно.

Мне как раз под Linux надо.
Пытался подружиться с fbexport, но почему-то не хочет. Ни бинарник ни работает, ни собрать не получается..

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
root@SERV-D:/srv/scripts/fbexport/fbexport-1.90/exe# ./fbexport
-bash: ./fbexport: Нет такого файла или каталога

root@SERV-D:/srv/scripts/fbexport/fbexport-1.90/exe# ls -l
итого 1620
-rw------- 1 serg users 669184 ноя 24  2009 fbcopy.exe
-rwxr-xr-x 1 serg users 366424 ноя 24  2009 fbexport
-rw------- 1 serg users 601600 ноя 24  2009 fbexport.exe
-rw------- 1 serg users  14843 сен 15  2003 mingwm10.dll

root@SERV-D:/srv/scripts/fbexport/fbexport-1.90# make
g++ -pthread -lfbclient ibpp/all_in_one.o fbcopy/args.o fbcopy/fbcopy.o fbcopy/TableDependency.o fbcopy/main.o  -oexe/fbcopy
/usr/bin/ld: cannot find -lfbclient
collect2: error: ld returned 1 exit status
make: *** [Makefile:20: exe/fbcopy] Ошибка 1
...
Рейтинг: 0 / 0
Экспорт данных в скрипт
    #39976633
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PATRI0Tсупер, то что нужно.

А после увольнения можешь добавить в экспортируемую таблицу запись со значением "';drop
database;commit;dhn"
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Экспорт данных в скрипт
    #39976640
PATRI0T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

)) о, мастадонты подъехали
кстати, а как правильно такое делать? Понимаю, что сарказм был в тему, про небезопасность и тд., но что лучше вместо такого решения?
...
Рейтинг: 0 / 0
Экспорт данных в скрипт
    #39976647
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PATRI0T,

даже если не учитывать умышленную зловредность, то как минимум это решение не годится при экспорте строковых значений.
Экспорт таблиц с BLOB будет вообще весёлый.

При экспорте в скрипт таблички в 1000000 строк, заливка в БД будет идти оооочень долго.
...
Рейтинг: 0 / 0
Экспорт данных в скрипт
    #39976648
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PATRI0Tа как правильно такое делать?

Правильно начинать с постановки задачи , а не способа решения решения. Ибо ответ
может сильно разниться.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Экспорт данных в скрипт
    #39976656
PATRI0T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис,

ну, у меня не 1млн, но где-то 20тыс строк.. а как лучше всего это сделать?
у мне подсказали fbexport, но у меня не получилось его завести на Linux..
мне именно и нужно просто синхронизировать пару таблиц между разными базами.
Спасибо.
...
Рейтинг: 0 / 0
Экспорт данных в скрипт
    #39976660
PATRI0T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PATRI0T,

Изначально задача такая. Есть мебельная фабрика в глуши с нестабильным интернетом.
На ее территории сервер с базой firebird.
Для клиентов реализовали небольшой личный кабинет, где те могут увидеть статусы своих заказов и прочую небольшую инфу.
ЛК крутится на VPS в облаке, и раньше обращался к серверу фабрики. Но из за проблем с интернетом, решили нужную инфу из базы просто копировать в облако.
Поставил туда firebird, создал пару табличек, ищу способ быстро и просто копировать нужную мне инфу.

Инфа выгружается из главной базы с помощью селектов, и хочу из них сформировать Insert в базу. Изначально мне понравилось как ibexpert мог такое делать - создать скрипт из запроса. Но под Linux решения для работы из консоли я не нашел. Кроме этого - через isql самому формировать инсерты..
Вот такая вот задача и мои мытарства с ней
...
Рейтинг: 0 / 0
Экспорт данных в скрипт
    #39976664
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EXTERNAL TABLE
IBPReplicator

Хотя если у тебя на машине даже fbclient отсутствует...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Экспорт данных в скрипт
    #39976676
PATRI0T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,
не, fbclient стоит. но я не пойму, make почему то его не видит
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
root@SERV-D:~# dpkg -L libfbclient2
/.
/usr
/usr/lib
/usr/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu/firebird
/usr/lib/x86_64-linux-gnu/firebird/3.0
/usr/lib/x86_64-linux-gnu/firebird/3.0/firebird.msg
/usr/lib/x86_64-linux-gnu/firebird/3.0/lib
/usr/lib/x86_64-linux-gnu/libfbclient.so.3.0.5
/usr/share
/usr/share/doc
/usr/lib/x86_64-linux-gnu/firebird/3.0/lib/libfbclient.so.2
/usr/lib/x86_64-linux-gnu/libfbclient.so.2
/usr/share/doc/libfbclient2



За IBPreplicator спасибо, но я читаю ман и чет не пойму, как мне с его помощью выгрузить мои данные и залить в другую базу..

*репликацией ни разу не пользовался
...
Рейтинг: 0 / 0
Экспорт данных в скрипт
    #39976680
PATRI0T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PATRI0T,
Вот попытка собрать fbexport.. почему он не может найти fbclient? по какому пути он его ищет?
Код: 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.
root@SERV-D:/srv/scripts/fbexport/fbexport-1.90# make --debug exe/fbexport
GNU Make 4.2.1
Эта программа собрана для x86_64-pc-linux-gnu
Copyright (C) 1988-2016 Free Software Foundation, Inc.
Лицензия GPLv3+: GNU GPL версии 3 или новее <http://gnu.org/licenses/gpl.html>
Это свободное программное обеспечение: вы можете свободно изменять его и
распространять. НЕТ НИКАКИХ ГАРАНТИЙ вне пределов, допустимых законом.
Чтение make-файлов...
Обновление make-файлов....
Обновление целей результата...
 Файл «exe/fbexport» не существует.
Необходимо пересобрать цель «exe/fbexport».
g++ -pthread -lfbclient ibpp/all_in_one.o fbexport/ParseArgs.o fbexport/FBExport.o fbexport/cli-main.o -oexe/fbexport
/usr/bin/ld: cannot find -lfbclient
collect2: error: ld returned 1 exit status
make: *** [Makefile:17: exe/fbexport] Ошибка 1


root@SERV-D:/srv/scripts/fbexport/fbexport-1.90# g++ -v -pthread -lfbclient ibpp/all_in_one.o fbexport/ParseArgs.o fbexport/FBExport.o fbexport/cli-main.o -oexe/fbexport
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/8/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 8.3.0-6' --with-bugurl=file:///usr/share/doc/gcc-8/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-8 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 8.3.0 (Debian 8.3.0-6)
COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/8/:/usr/lib/gcc/x86_64-linux-gnu/8/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/8/:/usr/lib/gcc/x86_64-linux-gnu/
LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/8/:/usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/8/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/8/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-pthread' '-o' 'exe/fbexport' '-shared-libgcc' '-mtune=generic' '-march=x86-64'
 /usr/lib/gcc/x86_64-linux-gnu/8/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/8/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/8/lto-wrapper -plugin-opt=-fresolution=/tmp/ccA3i8OS.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lpthread -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o exe/fbexport /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/8/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/8 -L/usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/8/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/8/../../.. -lfbclient ibpp/all_in_one.o fbexport/ParseArgs.o fbexport/FBExport.o fbexport/cli-main.o -lstdc++ -lm -lgcc_s -lgcc -lpthread -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/8/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/crtn.o
/usr/bin/ld: cannot find -lfbclient
collect2: error: ld returned 1 exit status
...
Рейтинг: 0 / 0
Экспорт данных в скрипт
    #39976687
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PATRI0T/usr/lib/x86_64-linux-gnu/libfbclient.so.3.0.5

А теперь проще:
whereis libfbclient.so
file <результат предыдущей команды>
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Экспорт данных в скрипт
    #39976721
PATRI0T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

да, спасибо, так все получилось. Make отработал
Код: sql
1.
ln -s /usr/lib/x86_64-linux-gnu/libfbclient.so.2 /usr/lib/x86_64-linux-gnu/libfbclient.so
...
Рейтинг: 0 / 0
Экспорт данных в скрипт
    #39976765
PATRI0T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
.
...
Рейтинг: 0 / 0
Экспорт данных в скрипт
    #39976771
PATRI0T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
простите.. опять застрял
А как быть с Win1251? fbexport не хочет экспортировать в WIN1251, рисует кракозябры
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
fbexport \
	-Si \
	-A "WIN1251" \
	-H $HOST \
	-D "$DB"  \
	-U $USER \
	-P $PASS \
	-F $EXP_FNAME_ORDERS \
	-Q "$SQL_EXPORT_ORDERS"

Start   : Mon Jul  6 18:04:07 2020
End     : Mon Jul  6 18:04:07 2020
Elapsed : 0 seconds.
1 rows exported to fb-export-orders.sql.

Transaction commited.


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
serg@SERV-D:/srv/scripts$ cat fb-export-orders.sql

INSERT INTO ORDERS 
(ID,ITM_ORDERNUM,STARTDATE,STATUS_DESCRIPTION,TOTALCOST,ORDER_PAY,
DEBT,DATE_PACK,DATE_OUT,BOX_PACKED,BOX_OUT,DRIVER_NAME,FILEPATH_CALC_CLIENT,FILEPATH_CALC_MANAGER,
FILEPATH_BILL,CLIENTNAME) 
values 
(557,'&#65533;&#65533;&#65533;&#65533;&#65533; 29.11 &#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;','2019-11-11','&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533; &#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;',5514,5514,0,'','','','','',NULL,NULL,NULL,'&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533; &#65533;&#65533;&#65533;&#65533;&#65533;');
...
Рейтинг: 0 / 0
Экспорт данных в скрипт
    #39976775
AltHasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
> LANG=ru_RU.cp1251
...
Рейтинг: 0 / 0
Экспорт данных в скрипт
    #39976778
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так это не fbexport "рисует кракозябры", а cat. Открой для себя чудной мир линуксовых локалей.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Экспорт данных в скрипт
    #39976779
PATRI0T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

Спасибо.
не, че-то не то. была LANG=ru_RU.UTF-8, сменил
Код: sql
1.
export LANG=ru_RU.cp1251


и все равно кракозябры. тоже самое и в mcedit и в nano.. где-то я неправильно делаю видимо..
...
Рейтинг: 0 / 0
Экспорт данных в скрипт
    #39976782
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dump и смотри что там на самом деле.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Экспорт данных в скрипт
    #39976936
Фотография o_v_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PATRI0T
Dimitry Sibiryakov,

Спасибо.
не, че-то не то. была LANG=ru_RU.UTF-8, сменил
Код: sql
1.
export LANG=ru_RU.cp1251



и все равно кракозябры. тоже самое и в mcedit и в nano.. где-то я неправильно делаю видимо..

Если локаль UTF-8, то и fbexport'у скажите, чтоб при коннекте клиентский набор символов UTF-8 использовал. Тогда в локали с UTF-8 всё увидится нормально.
А ежели в WIN1251 выводится, то тащите результат на виндовую тачку и там открывайте.
...
Рейтинг: 0 / 0
Экспорт данных в скрипт
    #39976989
PATRI0T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
o_v_a,
Да, точно, оно. Спасибо огромное.. но я чет опять не могу дальше...
Теперь все по русски выводится, но почему-то не импортируется. Более того, я не могу даже обычный Insert с этими данными сделать,

Версия сервера LI-V3.0.6.33328 Firebird 3.0
Код: sql
1.
2.
3.
4.
5.
6.
Подключаюсь:
isql-fb \
	-u $USER \
	-p $PASS \
	"$HOST:$DB" \
	-ch "UTF8"


Код: sql
1.
2.
3.
4.
5.
6.
CON> INSERT INTO 
ORDERS (ID,ITM_ORDERNUM,STARTDATE,STATUS_DESCRIPTION,TOTALCOST,ORDER_PAY,DEBT,DATE_PACK,DATE_OUT,BOX_PACKED,BOX_OUT,DRIVER_NAME,FILEPATH_CALC_CLIENT,FILEPATH_CALC_MANAGER,FILEPATH_BILL,CLIENTNAME) 
values 
(557,'Хизри 29.11 дозаказ','2019-11-11','Отгружен полностью',5514,5514,0,'','','','','',NULL,NULL,NULL,'Гамзатов Хизри');
Statement failed, SQLSTATE = 22018
conversion error from string ""
...
Рейтинг: 0 / 0
Экспорт данных в скрипт
    #39976997
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PATRI0T,

Пустую строку в дату ну никак не преобразовать
Если конечно DATE_PACK,DATE_OUT это даты
...
Рейтинг: 0 / 0
Экспорт данных в скрипт
    #39976998
PATRI0T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И через IBExpert Тоже не вставляет. Вот таблица куда вставку пытаюсь сделать
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
CREATE TABLE ORDERS (
    ID                     INTEGER NOT NULL,
    ITM_ORDERNUM           VARCHAR(100) NOT NULL,
    STARTDATE              DATE,
    STATUS_DESCRIPTION     VARCHAR(100) NOT NULL,
    TOTALCOST              NUMERIC(7,2),
    ORDER_PAY              NUMERIC(7,2),
    DEBT                   NUMERIC(7,2),
    DATE_PACK              DATE,
    DATE_OUT               DATE,
    BOX_PACKED             INTEGER,
    BOX_OUT                INTEGER,
    DRIVER_NAME            VARCHAR(100),
    FILEPATH_CALC_CLIENT   VARCHAR(200),
    FILEPATH_CALC_MANAGER  VARCHAR(200),
    FILEPATH_BILL          VARCHAR(200),
    CLIENTNAME             VARCHAR(50) NOT NULL
...
Рейтинг: 0 / 0
Экспорт данных в скрипт
    #39977100
Фотография o_v_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что вывод select даёт по полям DATE_PACK и DATE_OUT ?
Почему fb_export их прописал как пустые строки?
...
Рейтинг: 0 / 0
Экспорт данных в скрипт
    #39977138
PATRI0T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
m7m,

да, все так. Исправил, получилось.
Даты превращались в пустые строки, когда были Null. Там был select coalesce. Это поубирал, стало норм.
Но, как мне говорили умные люди, импорт оооочень долгий.. Импортирую так:
Код: sql
1.
2.
3.
4.
5.
6.
isql-fb \
	-ch "UTF8" \
	-i $IMPORTSQL \
	-u $USER \
	-p $PASS \
	"$HOST:$DB" 


И 200 записей импортировалось 30 секунд.. я боюсь про 20 тысяч...
Есть какие-нибудь варианты?
...
Рейтинг: 0 / 0
Экспорт данных в скрипт
    #39977139
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PATRI0TИ 200 записей импортировалось 30 секунд..

Ты их что, прямо через интернет импортировал? Надо было файл скрипта перекачать на целевой
сервер и импортировать локально.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Экспорт данных в скрипт
    #39977149
Фотография o_v_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PATRI0T

И 200 записей импортировалось 30 секунд.. я боюсь про 20 тысяч...
Есть какие-нибудь варианты?

Если есть критерии по времени выполнения, то только перенос скрипта на удаленный сервер и выполнение его там как ДС сказал.
Иначе скармливай роботу и нехай себе барабанит хоть несколько часов.
В моём случае роботы раз в сутки этим занимаются. И пускай хоть 24 часа это длится. Мне лично всё равно. Главное, чтоб раз в сутки процесс шёл и доходил до конца.
...
Рейтинг: 0 / 0
Экспорт данных в скрипт
    #39977152
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PATRI0T
репликацией ни разу не пользовался
Время пришло, пора.
...
Рейтинг: 0 / 0
Экспорт данных в скрипт
    #39977156
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
o_v_aГлавное, чтоб раз в сутки процесс шёл и доходил до конца.

У него в пятом сообщении заявлен нестабильный интернет, так что фиг он дойдёт до конца.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Экспорт данных в скрипт
    #39977191
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PATRI0T,

для справки. в пустую таблицу чуть поменьше размером записи, без индексов, скриптом, через isql, 1 миллион записей вставляется за 24 секунды. На десктопном компе.
...
Рейтинг: 0 / 0
Экспорт данных в скрипт
    #39977202
PATRI0T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv, да, все получилось. Если импортировать через весь интернет, то мои ~20тыщ записей засасываются 4секунды на слабенькой VPS
Спасибо всем огромное

Получился вот такой скрипт. Вдруг кому еще пригодится

Код: 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.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
#!/bin/bash

#INIT	
	HOST='******'
	DB='******\TEST SOLO.FDB'
	USER='******'
	PASS='******'
	
	EXP_FNAME_ORDERS='fb-export-orders.sql'
	EXP_FNAME_USERS='fb-export-users.sql'
	IMPORTSQL="fb-import.sql"
	
	TESTMODE="first 1" # чтобы быстрее работало в процессе отладки

	SQL_EXPORT_ORDERS="select $TESTMODE
        o.id,
        o.itm_ordernum,
        Coalesce(cast( o.plan_date_firststage as date),'01.01.2000') as StartDate,
        ls.status_description,
        coalesce( o.order_total_cost,0) as TotalCost,
        o.order_pay,
        iif ( o.order_status <7,
            iif(
                COALESCE (o.order_pay,0)>COALESCE (o.order_total_cost,0)*0.5,
                0,
                COALESCE (o.order_total_cost,0)/2-COALESCE (o.order_pay,0)
                ),
            COALESCE (o.order_total_cost,0)-COALESCE (o.order_pay,0)
        ) as Debt,
        ju.date_pack as date_pack,
        jo.fact_date_out as date_out,
        ju.box_count as box_packed,
        jo.box_count as box_out,
        jo.driver_name as driver_name,
        FILEPATH_CALC_CLIENT,
        FILEPATH_CALC_MANAGER,
        FILEPATH_BILL,
        o.client as clientname
    from orders o
            left join journal_upack ju on ju.order_id=o.id
            left join journal_out jo on jo.order_id=o.id
            left join list_statuses ls on ls.status_num=o.order_status
            left join clients c on o.client = c.clientname
    where o.order_status > 0;"

	SQL_EXPORT_USERS="select $TESTMODE
		ID,
		upper(USERNAME) as USERNAME,
		USERROLE,
		PASSWD,
		CLIENTID
    FROM USERS
    WHERE USERROLE = 'client'"

echo ">>>> Export data "
echo "> Export orders table.."

# Orders
fbexport \
	-Si \
	-A "UTF8" \
	-H $HOST \
	-D "$DB"  \
	-U $USER \
	-P $PASS \
	-F $EXP_FNAME_ORDERS \
	-Q "$SQL_EXPORT_ORDERS"

# Users
fbexport \
	-Si \
	-A "UTF8" \
	-H $HOST \
	-D "$DB"  \
	-U $USER \
	-P $PASS \
	-F $EXP_FNAME_USERS \
	-Q "$SQL_EXPORT_USERS"


	echo "Delete from orders;" > $IMPORTSQL
	cat $EXP_FNAME_ORDERS      >> $IMPORTSQL
	cat $EXP_FNAME_USERS       >> $IMPORTSQL
echo ">> OK."


#----------------------------------------	
echo ">>>> Send fbimport file via  scp "

# Import data
	HOST='******'
	USER='******'
	REMOTEFILE='/var/docker/firebird-exchangedir/'
	
	 scp ./$IMPORTSQL  $USER@$HOST:$REMOTEFILE
	 echo ">> OK."
echo ">>>> Import fb-import.sql"
	 ssh  $USER@$HOST sudo docker exec solo-firebird bash /firebird/fb-import.sh
echo "-- DONE --"

...
Рейтинг: 0 / 0
34 сообщений из 34, показаны все 2 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Экспорт данных в скрипт
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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