Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2      [все]
 Экспорт данных в скрипт  [new]
PATRI0T
Member

Откуда: Майкоп
Сообщений: 132
ДОбрый день. подскажите, как можно из консоли экспортировать результаты select запроса в insert скрипт (как это может делать ibexpert в окошках).
Хотелось бы какое-то решение, использующее isql или что-то типа того..
Нужно для автоматизации кое-какой рутины

Сообщение было отредактировано: 6 июл 20, 03:56
6 июл 20, 03:57    [22162491]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных в скрипт  [new]
DarkMaster
Member

Откуда: Donetsk,Ukraine
Сообщений: 6352
PATRI0T,

http://fbexport.sourceforge.net/
6 июл 20, 04:58    [22162497]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных в скрипт  [new]
AltHasp
Member

Откуда:
Сообщений: 163
DarkMaster,

IBeScript - лучшая тулза для имп/эксп (imho).
6 июл 20, 09:11    [22162515]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных в скрипт  [new]
o_v_a
Member

Откуда: Тула
Сообщений: 1127
Например, так
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
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);
Этот скрипт потом выполняется на целевой базе
isql -i result.sql -u USERNAME -p USERPASS -role USERROLE dest_host/port:dest_database_path_or_alias



Использую под линухом в роботах при синхронизации между базами небольших справочников.
6 июл 20, 10:17    [22162558]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных в скрипт  [new]
PATRI0T
Member

Откуда: Майкоп
Сообщений: 132
o_v_a, О, спасибо тебе! супер, то что нужно.

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

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
6 июл 20, 11:01    [22162591]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных в скрипт  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 50835

PATRI0T
супер, то что нужно.

А после увольнения можешь добавить в экспортируемую таблицу запись со значением "';drop
database;commit;dhn"

Posted via ActualForum NNTP Server 1.5

6 июл 20, 12:32    [22162640]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных в скрипт  [new]
PATRI0T
Member

Откуда: Майкоп
Сообщений: 132
Dimitry Sibiryakov,

)) о, мастадонты подъехали
кстати, а как правильно такое делать? Понимаю, что сарказм был в тему, про небезопасность и тд., но что лучше вместо такого решения?
6 июл 20, 12:53    [22162657]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных в скрипт  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 10588
PATRI0T,

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

При экспорте в скрипт таблички в 1000000 строк, заливка в БД будет идти оооочень долго.
6 июл 20, 12:59    [22162668]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных в скрипт  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 50835

PATRI0T
а как правильно такое делать?

Правильно начинать с постановки задачи, а не способа решения решения. Ибо ответ
может сильно разниться.

Posted via ActualForum NNTP Server 1.5

6 июл 20, 13:01    [22162670]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных в скрипт  [new]
PATRI0T
Member

Откуда: Майкоп
Сообщений: 132
Симонов Денис,

ну, у меня не 1млн, но где-то 20тыс строк.. а как лучше всего это сделать?
у мне подсказали fbexport, но у меня не получилось его завести на Linux..
мне именно и нужно просто синхронизировать пару таблиц между разными базами.
Спасибо.
6 июл 20, 13:22    [22162695]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных в скрипт  [new]
PATRI0T
Member

Откуда: Майкоп
Сообщений: 132
PATRI0T,

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

Инфа выгружается из главной базы с помощью селектов, и хочу из них сформировать Insert в базу. Изначально мне понравилось как ibexpert мог такое делать - создать скрипт из запроса. Но под Linux решения для работы из консоли я не нашел. Кроме этого - через isql самому формировать инсерты..
Вот такая вот задача и мои мытарства с ней
6 июл 20, 13:29    [22162704]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных в скрипт  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 50835

EXTERNAL TABLE
IBPReplicator

Хотя если у тебя на машине даже fbclient отсутствует...

Posted via ActualForum NNTP Server 1.5

6 июл 20, 13:39    [22162711]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных в скрипт  [new]
PATRI0T
Member

Откуда: Майкоп
Сообщений: 132
Dimitry Sibiryakov,
не, fbclient стоит. но я не пойму, make почему то его не видит
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 спасибо, но я читаю ман и чет не пойму, как мне с его помощью выгрузить мои данные и залить в другую базу..

*репликацией ни разу не пользовался
6 июл 20, 13:53    [22162734]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных в скрипт  [new]
PATRI0T
Member

Откуда: Майкоп
Сообщений: 132
PATRI0T,
Вот попытка собрать fbexport.. почему он не может найти fbclient? по какому пути он его ищет?
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
6 июл 20, 14:01    [22162742]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных в скрипт  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 50835

PATRI0T
/usr/lib/x86_64-linux-gnu/libfbclient.so.3.0.5

А теперь проще:
whereis libfbclient.so
file <результат предыдущей команды>

Posted via ActualForum NNTP Server 1.5

6 июл 20, 14:10    [22162756]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных в скрипт  [new]
PATRI0T
Member

Откуда: Майкоп
Сообщений: 132
Dimitry Sibiryakov,

да, спасибо, так все получилось. Make отработал
ln -s /usr/lib/x86_64-linux-gnu/libfbclient.so.2 /usr/lib/x86_64-linux-gnu/libfbclient.so
6 июл 20, 15:37    [22162833]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных в скрипт  [new]
PATRI0T
Member

Откуда: Майкоп
Сообщений: 132
.

Сообщение было отредактировано: 6 июл 20, 18:06
6 июл 20, 18:07    [22162925]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных в скрипт  [new]
PATRI0T
Member

Откуда: Майкоп
Сообщений: 132
простите.. опять застрял
А как быть с Win1251? fbexport не хочет экспортировать в WIN1251, рисует кракозябры
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.

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;');
6 июл 20, 18:19    [22162935]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных в скрипт  [new]
AltHasp
Member

Откуда:
Сообщений: 163
> LANG=ru_RU.cp1251
6 июл 20, 18:33    [22162942]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных в скрипт  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 50835

Так это не fbexport "рисует кракозябры", а cat. Открой для себя чудной мир линуксовых локалей.

Posted via ActualForum NNTP Server 1.5

6 июл 20, 18:34    [22162945]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных в скрипт  [new]
PATRI0T
Member

Откуда: Майкоп
Сообщений: 132
Dimitry Sibiryakov,

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

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

Сообщение было отредактировано: 6 июл 20, 18:37
6 июл 20, 18:39    [22162948]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных в скрипт  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 50835

dump и смотри что там на самом деле.

Posted via ActualForum NNTP Server 1.5

6 июл 20, 18:43    [22162952]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных в скрипт  [new]
o_v_a
Member

Откуда: Тула
Сообщений: 1127
PATRI0T
Dimitry Sibiryakov,

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


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

Если локаль UTF-8, то и fbexport'у скажите, чтоб при коннекте клиентский набор символов UTF-8 использовал. Тогда в локали с UTF-8 всё увидится нормально.
А ежели в WIN1251 выводится, то тащите результат на виндовую тачку и там открывайте.
7 июл 20, 09:01    [22163164]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных в скрипт  [new]
PATRI0T
Member

Откуда: Майкоп
Сообщений: 132
o_v_a,
Да, точно, оно. Спасибо огромное.. но я чет опять не могу дальше...
Теперь все по русски выводится, но почему-то не импортируется. Более того, я не могу даже обычный Insert с этими данными сделать,

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

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 ""


Сообщение было отредактировано: 7 июл 20, 11:11
7 июл 20, 11:10    [22163243]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных в скрипт  [new]
m7m
Member

Откуда: Украина, Мариуполь
Сообщений: 1400
PATRI0T,

Пустую строку в дату ну никак не преобразовать
Если конечно DATE_PACK,DATE_OUT это даты
7 июл 20, 11:21    [22163256]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных в скрипт  [new]
PATRI0T
Member

Откуда: Майкоп
Сообщений: 132
И через IBExpert Тоже не вставляет. Вот таблица куда вставку пытаюсь сделать
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
7 июл 20, 11:23    [22163259]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных в скрипт  [new]
o_v_a
Member

Откуда: Тула
Сообщений: 1127
А что вывод select даёт по полям DATE_PACK и DATE_OUT ?
Почему fb_export их прописал как пустые строки?
7 июл 20, 13:58    [22163415]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных в скрипт  [new]
PATRI0T
Member

Откуда: Майкоп
Сообщений: 132
m7m,

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

И 200 записей импортировалось 30 секунд.. я боюсь про 20 тысяч...
Есть какие-нибудь варианты?
7 июл 20, 15:35    [22163502]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных в скрипт  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 50835

PATRI0T
И 200 записей импортировалось 30 секунд..

Ты их что, прямо через интернет импортировал? Надо было файл скрипта перекачать на целевой
сервер и импортировать локально.

Posted via ActualForum NNTP Server 1.5

7 июл 20, 15:41    [22163507]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных в скрипт  [new]
o_v_a
Member

Откуда: Тула
Сообщений: 1127
PATRI0T

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

Если есть критерии по времени выполнения, то только перенос скрипта на удаленный сервер и выполнение его там как ДС сказал.
Иначе скармливай роботу и нехай себе барабанит хоть несколько часов.
В моём случае роботы раз в сутки этим занимаются. И пускай хоть 24 часа это длится. Мне лично всё равно. Главное, чтоб раз в сутки процесс шёл и доходил до конца.

Сообщение было отредактировано: 7 июл 20, 16:09
7 июл 20, 16:10    [22163531]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных в скрипт  [new]
Ivan_Pisarevsky
Member

Откуда: НН
Сообщений: 8597
PATRI0T
репликацией ни разу не пользовался
Время пришло, пора.
7 июл 20, 16:19    [22163534]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных в скрипт  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 50835

o_v_a
Главное, чтоб раз в сутки процесс шёл и доходил до конца.

У него в пятом сообщении заявлен нестабильный интернет, так что фиг он дойдёт до конца.

Posted via ActualForum NNTP Server 1.5

7 июл 20, 16:41    [22163549]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных в скрипт  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 29037
PATRI0T,

для справки. в пустую таблицу чуть поменьше размером записи, без индексов, скриптом, через isql, 1 миллион записей вставляется за 24 секунды. На десктопном компе.
7 июл 20, 18:14    [22163621]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных в скрипт  [new]
PATRI0T
Member

Откуда: Майкоп
Сообщений: 132
kdv, да, все получилось. Если импортировать через весь интернет, то мои ~20тыщ записей засасываются 4секунды на слабенькой VPS
Спасибо всем огромное

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

#!/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 --"
7 июл 20, 18:41    [22163640]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / Firebird, InterBase Ответить