Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Экспорт данных в скрипт / 25 сообщений из 34, страница 1 из 2
06.07.2020, 03:57
    #39976541
PATRI0T
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт данных в скрипт
ДОбрый день. подскажите, как можно из консоли экспортировать результаты select запроса в insert скрипт (как это может делать ibexpert в окошках).
Хотелось бы какое-то решение, использующее isql или что-то типа того..
Нужно для автоматизации кое-какой рутины
...
Рейтинг: 0 / 0
06.07.2020, 04:58
    #39976545
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт данных в скрипт
...
Рейтинг: 0 / 0
06.07.2020, 09:11
    #39976557
AltHasp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт данных в скрипт
DarkMaster,

IBeScript - лучшая тулза для имп/эксп (imho).
...
Рейтинг: 0 / 0
06.07.2020, 10:17
    #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
06.07.2020, 11:01
    #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
06.07.2020, 12:32
    #39976633
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт данных в скрипт
PATRI0Tсупер, то что нужно.

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

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

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

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

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

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

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

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

Хотя если у тебя на машине даже fbclient отсутствует...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
06.07.2020, 13:53
    #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
06.07.2020, 14:01
    #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
06.07.2020, 14:10
    #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
06.07.2020, 15:37
    #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
06.07.2020, 18:07
    #39976765
PATRI0T
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт данных в скрипт
.
...
Рейтинг: 0 / 0
06.07.2020, 18:19
    #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
06.07.2020, 18:33
    #39976775
AltHasp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт данных в скрипт
Код: plsql
1.
> LANG=ru_RU.cp1251
...
Рейтинг: 0 / 0
06.07.2020, 18:34
    #39976778
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт данных в скрипт
Так это не fbexport "рисует кракозябры", а cat. Открой для себя чудной мир линуксовых локалей.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
06.07.2020, 18:39
    #39976779
PATRI0T
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт данных в скрипт
Dimitry Sibiryakov,

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


и все равно кракозябры. тоже самое и в mcedit и в nano.. где-то я неправильно делаю видимо..
...
Рейтинг: 0 / 0
06.07.2020, 18:43
    #39976782
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт данных в скрипт
dump и смотри что там на самом деле.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
07.07.2020, 09:01
    #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
07.07.2020, 11:10
    #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
07.07.2020, 11:21
    #39976997
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт данных в скрипт
PATRI0T,

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


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