Puncte:0

FBExport - utilizați pe Ubuntu

drapel tr

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

yagmoth555 avatar
drapel cn
Bună, ca o soluție, puteți copia baza de date Firebird pe o mașină Windows pentru a face sarcina? Întreb, după cum știu, baza de date Firebird este un singur fișier
drapel tr
@yagmoth555 - mulțumesc pentru răspuns. Nu pot face asta. Baza de date este imensă. Am nevoie de doar aproximativ 1% date.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.