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

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

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

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

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

Откуда:
Сообщений: 162
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

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

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

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

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

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

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

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

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

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

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

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

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

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

Так это не 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

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

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