TL;DR: Cum se utilizează FBExport pe Ubuntu / cum se exportă rezultatul interogării Firebird în fișierul csv.
Aș dori să exportați rezultatul interogării din baza de date Firebird în fișierul csv.
Pe Windows fac o treabă similară folosind FBExport.
Din păcate, nu știu să folosesc acest instrument pe Ubuntu.
Am descărcat pachetul de pe http://www.firebirdfaq.org/fbexport.php
Când încerc să rulez ./fbexport am primit o eroare:
./fbexport: eroare la încărcarea bibliotecilor partajate: libfbclient.so.2:
nu se poate deschide fișierul obiect partajat: nu există un astfel de fișier sau director
De asemenea, am încercat să compilați pachetul.
Mai întâi m-am schimbat face
fisier de la:
#################################################################### #############################
.SUFIXE: .o .cpp
OBJECTS_FBE=fbexport/ParseArgs.o fbexport/FBExport.o fbexport/cli-main.o
OBJECTS_FBC=fbcopy/args.o fbcopy/fbcopy.o fbcopy/TableDependency.o fbcopy/main.o
# Indicatori compilator și linker
COMPILE_FLAGS=-O1 -DIBPP_LINUX -DIBPP_GCC -Iibpp
LINK_FLAGS=-pthread -lfbclient
#COMPILE_FLAGS=-O1 -DIBPP_WINDOWS -DIBPP_GCC -Iibpp
#LINK_FLAGS=
toate: exe/fbcopy exe/fbexport
exe/fbexport: $(OBJECTS_FBE) ibpp/all_in_one.o
g++ $(LINK_FLAGS) ibpp/all_in_one.o $(OBJECTS_FBE) -oexe/fbexport
exe/fbcopy: $(OBJECTS_FBC) ibpp/all_in_one.o
g++ $(LINK_FLAGS) ibpp/all_in_one.o $(OBJECTS_FBC) -oexe/fbcopy
# Doar Linux
# FB2.0: g++ -pthread -lfbclient $(OBIECTE) -o$(EXENAME)
# FB1.5: g++ -lfbclient $(OBIECTE) -o$(EXENAME)
# FB1.0: g++ -lgds -lcrypt -lm $(OBIECTE) -o$(EXENAME)
instalare:
instalați exe/fbcopy /usr/bin/fbcopy
instalați exe/fbexport /usr/bin/fbexport
.cpp.o:
g++ -c $(COMPILE_FLAGS) -o $@ $<
curat:
rm -f fbcopy/*.o
rm -f ibpp/all_in_one.o
rm -f exe/fbcopy*
rm -f fbexport/*.o
rm -f exe/fbexport*
#EOF
la:
#################################################################### #############################
.SUFIXE: .o .cpp
OBJECTS_FBE=fbexport/ParseArgs.o fbexport/FBExport.o fbexport/cli-main.o
# Indicatori compilator și linker
COMPILE_FLAGS=-O1 -DIBPP_LINUX -DIBPP_GCC -Iibpp
LINK_FLAGS=-pthread -lfbclient
#COMPILE_FLAGS=-O1 -DIBPP_WINDOWS -DIBPP_GCC -Iibpp
#LINK_FLAGS=
toate: exe/fbexport
exe/fbexport: $(OBJECTS_FBE) ibpp/all_in_one.o
g++ $(LINK_FLAGS) ibpp/all_in_one.o $(OBJECTS_FBE) -oexe/fbexport
# Doar Linux
# FB2.0: g++ -pthread -lfbclient $(OBIECTE) -o$(EXENAME)
# FB1.5: g++ -lfbclient $(OBIECTE) -o$(EXENAME)
# FB1.0: g++ -lgds -lcrypt -lm $(OBIECTE) -o$(EXENAME)
instalare:
instalați exe/fbexport /usr/bin/fbexport
.cpp.o:
g++ -c $(COMPILE_FLAGS) -o $@ $<
curat:
rm -f ibpp/all_in_one.o
rm -f fbexport/*.o
rm -f exe/fbexport*
#EOF
(pentru că îmi place să compilez numai FBExport (excluzând FBCopy))
După această schimbare am încercat să alerg face
în folderul principal.
Ieșire:
user@apiserver:~/fbexport-1.90$ make
g++ -c -O1 -DIBPP_LINUX -DIBPP_GCC -Iibpp -o fbexport/ParseArgs.o fbexport/ParseArgs.cpp
g++ -c -O1 -DIBPP_LINUX -DIBPP_GCC -Iibpp -o fbexport/FBExport.o fbexport/FBExport.cpp
fbexport/FBExport.cpp: În funcția membru âstd::string FBExport::CreateHumanString(IBPP::Statement&, int)â:
fbexport/FBExport.cpp:318:29: avertisment: formatul â%ldâ așteaptă un argument de tip âlong intâ, dar argumentul 3 are tipul âintâ [-Wformat=]
318 | sprintf(str, "%ld", x);
| ~~^ ~
| | |
| | int
| lung int
| %d
fbexport/FBExport.cpp:40:21: avertisment: formatul â%lliâ așteaptă un argument de tip âlong long intâ, dar argumentul 3 are tipul âint64_tâ {alias âlong intâ} [-Wformat=]
40 | #define INT64FORMAT „%lli”
| ^~~~~~
fbexport/FBExport.cpp:351:26: notă: în extinderea macro-ului âINT64FORMATâ
351 | sprintf(str, INT64FORMAT, int64val);
| ^~~~~~~~~~~
fbexport/FBExport.cpp:40:25: notă: șirul de format este definit aici
40 | #define INT64FORMAT „%lli”
| ~~~^
| |
| lung lung int
| %li
fbexport/FBExport.cpp: În funcția membru âbool FBExport::CreateString(IBPP::Statement&, int, std::string&)â:
fbexport/FBExport.cpp:429:29: avertisment: formatul â%ldâ așteaptă un argument de tip âlong intâ, dar argumentul 3 are tipul âintâ [-Wformat=]
429 | sprintf(str, "%ld", x);
| ~~^ ~
| | |
| | int
| lung int
| %d
fbexport/FBExport.cpp:435:29: avertisment: formatul â%ldâ așteaptă un argument de tip âlong intâ, dar argumentul 3 are tipul âintâ [-Wformat=]
435 | sprintf(str, "%ld", d.GetDate());
| ~~^ ~~~~~~~~~~~
| | |
| lung int int
| %d
fbexport/FBExport.cpp:440:29: avertisment: formatul â%ldâ așteaptă un argument de tip âlong intâ, dar argumentul 3 are tipul âintâ [-Wformat=]
440 | sprintf(str, "%ld", t.GetTime());
| ~~^ ~~~~~~~~~~~
| | |
| lung int int
| %d
fbexport/FBExport.cpp:40:21: avertisment: formatul â%lliâ așteaptă un argument de tip âlong long intâ, dar argumentul 3 are tipul âint64_tâ {alias âlong intâ} [-Wformat=]
40 | #define INT64FORMAT „%lli”
| ^~~~~~
fbexport/FBExport.cpp:462:26: notă: în extinderea macro-ului âINT64FORMATâ
462 | sprintf(str, INT64FORMAT, int64val);
| ^~~~~~~~~~~
fbexport/FBExport.cpp:40:25: notă: șirul de format este definit aici
40 | #define INT64FORMAT „%lli”
| ~~~^
| |
| lung lung int
| %li
fbexport/FBExport.cpp: În funcția membru âint FBExport::Export(IBPP::Statement&, FILE*)â:
fbexport/FBExport.cpp:487:18: avertisment: ISO C++17 nu permite âregisterâ specificatorul clasei de stocare [-Wregister]
487 | register int fc = st->Columns();
| ^~
fbexport/FBExport.cpp:491:23: avertisment: ISO C++17 nu permite âregisterâ specificatorul clasei de stocare [-Wregister]
491 | pentru (înregistrați int i=1; i<=fc; i++)
| ^
fbexport/FBExport.cpp:505:27: avertisment: ISO C++17 nu permite âregisterâ specificatorul clasei de stocare [-Wregister]
505 | pentru (înregistrați int i=1; i<=fc; i++) // ... exportați toate câmpurile în fișier.
| ^
fbexport/FBExport.cpp: În funcția membru âint FBExport::ExportHuman(IBPP::Statement&, FILE*)â:
fbexport/FBExport.cpp:829:18: avertisment: ISO C++17 nu permite âregisterâ specificatorul clasei de stocare [-Wregister]
829 | register int fc = st->Columns();
| ^~
fbexport/FBExport.cpp:835:27: avertisment: ISO C++17 nu permite âregisterâ specificatorul clasei de stocare [-Wregister]
835 | pentru (înregistrează int i=1; i<=fc; i++) // scoate antet CSV.
| ^
fbexport/FBExport.cpp:847:27: avertisment: ISO C++17 nu permite âregisterâ specificatorul clasei de stocare [-Wregister]
847 | pentru (înregistrați int i=1; i<=fc; i++) // ... exportați toate câmpurile în fișier.
| ^
fbexport/FBExport.cpp:860:27: avertisment: ISO C++17 nu permite âregisterâ specificatorul clasei de stocare [-Wregister]
860 | pentru (înregistrează int i=1; i<=fc; i++) // scoate antet CSV.
| ^
fbexport/FBExport.cpp:875:27: avertisment: ISO C++17 nu permite âregisterâ specificatorul clasei de stocare [-Wregister]
875 | pentru (înregistrați int i=1; i<=fc; i++) // ... exportați toate câmpurile în fișier.
| ^
fbexport/FBExport.cpp: În funcția âint statement_length(FILE*)â:
fbexport/FBExport.cpp:1335:24: avertisment: ISO C++17 nu permite âregisterâ specificatorul clasei de stocare [-Wregister]
1335 | înregistrare int c = 0, tmp = 0;
| ^
fbexport/FBExport.cpp:1335:31: avertisment: ISO C++17 nu permite âregisterâ specificatorul clasei de stocare [-Wregister]
1335 | înregistrare int c = 0, tmp = 0;
| ^~~
fbexport/FBExport.cpp:1336:24: avertisment: ISO C++17 nu permite âregisterâ specificatorul clasei de stocare [-Wregister]
1336 | înregistrare int l = 0;
| ^
fbexport/FBExport.cpp: În funcția âchar* read_statement(char*, int, FILE*)â:
fbexport/FBExport.cpp:1376:24: avertisment: ISO C++17 nu permite âregisterâ specificatorul clasei de stocare [-Wregister]
1376 | înregistrare int c = 0, tmp = 0;
| ^
fbexport/FBExport.cpp:1376:31: avertisment: ISO C++17 nu permite âregisterâ specificatorul clasei de stocare [-Wregister]
1376 | înregistrare int c = 0, tmp = 0;
| ^~~
fbexport/FBExport.cpp:1377:25: avertisment: ISO C++17 nu permite âregisterâ specificatorul clasei de stocare [-Wregister]
1377 | register char *P;
| ^
fbexport/FBExport.cpp: În funcția membru âstd::string FBExport::CreateHumanString(IBPP::Statement&, int)â:
fbexport/FBExport.cpp:339:17: avertisment: ignorarea valorii de returnare a âchar* gcvt(double, int, char*)â declarat cu atributul âwarn_unused_resultâ [-Wunused-result]
339 | gcvt(fval, 19, str);
| ~~~~^~~~~~~~~~~~~~~
fbexport/FBExport.cpp:345:17: avertisment: ignorarea valorii de returnare a âchar* gcvt(double, int, char*)â declarat cu atributul âwarn_unused_resultâ [-Wunused-result]
345 | gcvt(dval, 19, str);
| ~~~~^~~~~~~~~~~~~~~
fbexport/FBExport.cpp: În funcția membru âbool FBExport::CreateString(IBPP::Statement&, int, std::string&)â:
fbexport/FBExport.cpp:452:17: avertisment: ignorarea valorii de returnare a âchar* gcvt(double, int, char*)â declarat cu atributul âwarn_unused_resultâ [-Wunused-result]
452 | gcvt(fval, 19, str);
| ~~~~^~~~~~~~~~~~~~~
fbexport/FBExport.cpp:457:17: avertisment: ignorarea valorii de returnare a âchar* gcvt(double, int, char*)â declarat cu atributul âwarn_unused_resultâ [-Wunused-result]
457 | gcvt(dval, 19, str);
| ~~~~^~~~~~~~~~~~~~~
fbexport/FBExport.cpp: În funcția membru âint FBExport::Import(IBPP::Statement&, FILE*)â:
fbexport/FBExport.cpp:706:26: avertisment: se ignoră valoarea de returnare a âsize_t fread(void*, size_t, size_t, FILE*)â declarată cu atributul âwarn_unused_resultâ [-Wunused-result-
706 | fread(buff, size, 1, fp);
| ~~~~~^~~~~~~~~~~~~~~~~~~
fbexport/FBExport.cpp: În funcția membru âint FBExport::Init(Argumente*)â:
fbexport/FBExport.cpp:1211:41: avertisment: â__builtin___sprintf_chkâ poate scrie un nul final după sfârșitul destinației [-Wformat-overflow=]
1211 | sprintf(num, "%d", i+1);
| ^
În fișierul inclus din /usr/include/stdio.h:888,
din /usr/include/c++/11/cstdio:42,
din /usr/include/c++/11/ext/string_conversions.h:43,
din /usr/include/c++/11/bits/basic_string.h:6606,
din /usr/include/c++/11/string:55,
de la ibpp/ibpp.h:91,
de la fbexport/FBExport.cpp:44:
/usr/include/x86_64-linux-gnu/bits/stdio2.h:38:34: notă: â__builtin___sprintf_chkâ iese între 2 și 11 octeți într-o destinație de dimensiunea 10
38 | returnează __builtin___sprintf_chk (__s, __USE_FORTIFY_LEVEL - 1,
| ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~
39 | __glibc_objsize (__s), __fmt,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
40 | __va_arg_pack ());
| ~~~~~~~~~~~~~~~~~
g++ -c -O1 -DIBPP_LINUX -DIBPP_GCC -Iibpp -o fbexport/cli-main.o fbexport/cli-main.cpp
g++ -c -O1 -DIBPP_LINUX -DIBPP_GCC -Iibpp -o ibpp/all_in_one.o ibpp/all_in_one.cpp
g++ -pthread -lfbclient ibpp/all_in_one.o fbexport/ParseArgs.o fbexport/FBExport.o fbexport/cli-main.o -oexe/fbexport
Ce pot face în acest caz?
Salutari
Tomasz