Điểm:0

FBExport - sử dụng trên Ubuntu

lá cờ tr

TL; DR: Cách sử dụng FBExport trên Ubuntu/cách xuất kết quả truy vấn Firebird sang tệp csv.

Tôi muốn xuất kết quả truy vấn từ cơ sở dữ liệu firebird sang tệp csv. Trên Windows, tôi thực hiện công việc tương tự bằng FBExport.

Thật không may, tôi không biết sử dụng công cụ này trên Ubuntu.

Tôi đã tải xuống gói từ http://www.firebirdfaq.org/fbexport.php

Khi tôi thử chạy ./fbexport, tôi gặp lỗi:

./fbexport: lỗi khi tải thư viện dùng chung: libfbclient.so.2: không thể mở tệp đối tượng được chia sẻ: Không có tệp hoặc thư mục như vậy

Tôi cũng đã thử biên dịch pack.

Đầu tiên tôi thay đổi chế tạo tập tin từ:

################################################# ############################
.SUFFIXES: .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

# Trình biên dịch & cờ liên kết
COMPILE_FLAGS=-O1 -DIBPP_LINUX -DIBPP_GCC -Iibpp
LINK_FLAGS=-pthread -lfbclient

#COMPILE_FLAGS=-O1 -DIBPP_WINDOWS -DIBPP_GCC -Iibpp
#LINK_FLAGS=

tất cả: 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

# Chỉ dành cho Linux
# FB2.0: g++ -pthread -lfbclient $(OBJECTS) -o$(EXENAME)
# FB1.5: g++ -lfbclient $(OBJECTS) -o$(EXENAME)
# FB1.0: g++ -lgds -lcrypt -lm $(OBJECTS) -o$(EXENAME)

Tải về:
        cài đặt exe/fbcopy/usr/bin/fbcopy
        cài đặt exe/fbexport/usr/bin/fbexport

.cpp.o:
        g++ -c $(COMPILE_FLAGS) -o $@ $<

dọn dẹp:
        rm -f fbcopy/*.o
        rm -f ibpp/all_in_one.o
        rm -f exe/fbcopy*
        rm -f fbexport/*.o
        rm -f exe/fbexport*

#EOF

đến:

################################################# ############################
.SUFFIXES: .o .cpp

OBJECTS_FBE=fbexport/ParseArgs.o fbexport/FBExport.o fbexport/cli-main.o

# Trình biên dịch & cờ liên kết
COMPILE_FLAGS=-O1 -DIBPP_LINUX -DIBPP_GCC -Iibpp
LINK_FLAGS=-pthread -lfbclient

#COMPILE_FLAGS=-O1 -DIBPP_WINDOWS -DIBPP_GCC -Iibpp
#LINK_FLAGS=

tất cả: exe/fbexport

exe/fbexport: $(OBJECTS_FBE) ibpp/all_in_one.o
        g++ $(LINK_FLAGS) ibpp/all_in_one.o $(OBJECTS_FBE) -oexe/fbexport

# Chỉ dành cho Linux
# FB2.0: g++ -pthread -lfbclient $(OBJECTS) -o$(EXENAME)
# FB1.5: g++ -lfbclient $(OBJECTS) -o$(EXENAME)
# FB1.0: g++ -lgds -lcrypt -lm $(OBJECTS) -o$(EXENAME)

Tải về:
        cài đặt exe/fbexport/usr/bin/fbexport

.cpp.o:
        g++ -c $(COMPILE_FLAGS) -o $@ $<

dọn dẹp:
        rm -f ibpp/all_in_one.o
        rm -f fbexport/*.o
        rm -f exe/fbexport*

#EOF

(vì tôi chỉ muốn biên dịch FBExport (không bao gồm FBCopy))

Sau thay đổi này, tôi đã thử chạy chế tạo trong thư mục chính.

Đầu ra:

user@apiserver:~/fbexport-1.90$ tạo
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: Trong chức năng thành viên âstd::string FBExport::CreateHumanString(IBPP::Statement&, int)â:
fbexport/FBExport.cpp:318:29: cảnh báo: định dạng â%ldâ mong đợi đối số kiểu âlong intâ, nhưng đối số 3 có kiểu âintâ [-Wformat=]
  318 | sprintf(str, "%ld", x);
      | ~~^~
      | | |
      | | int
      | int dài
      | %d
fbexport/FBExport.cpp:40:21: cảnh báo: định dạng â%lliâ dự kiến ​​đối số thuộc loại âlong long intâ, nhưng đối số 3 có loại âint64_tâ {hay còn gọi là âlong intâ} [-Wformat=]
   40 | #define INT64FORMAT "%lli"
      | ^~~~~~~
fbexport/FBExport.cpp:351:26: lưu ý: trong phần mở rộng của macro âINT64FORMATâ
  351 | sprintf(str, INT64FORMAT, int64val);
      | ^~~~~~~~~~~~~
fbexport/FBExport.cpp:40:25: lưu ý: chuỗi định dạng được xác định tại đây
   40 | #define INT64FORMAT "%lli"
      | ~~~^
      | |
      | dài dài int
      | %li
fbexport/FBExport.cpp: Trong hàm thành viên âbool FBExport::CreateString(IBPP::Statement&, int, std::string&)â:
fbexport/FBExport.cpp:429:29: cảnh báo: định dạng â%ldâ mong đợi đối số kiểu âlong intâ, nhưng đối số 3 có kiểu âintâ [-Wformat=]
  429 | sprintf(str, "%ld", x);
      | ~~^~
      | | |
      | | int
      | int dài
      | %d
fbexport/FBExport.cpp:435:29: cảnh báo: định dạng â%ldâ cần đối số kiểu âlong intâ, nhưng đối số 3 có kiểu âintâ [-Wformat=]
  435 | sprintf(str, "%ld", d.GetDate());
      | ~~^~~~~~~~~~~~~
      | | |
      | dài int int
      | %d
fbexport/FBExport.cpp:440:29: cảnh báo: định dạng â%ldâ cần đối số kiểu âlong intâ, nhưng đối số 3 có kiểu âintâ [-Wformat=]
  440 | sprintf(str, "%ld", t.GetTime());
      | ~~^~~~~~~~~~~~~
      | | |
      | dài int int
      | %d
fbexport/FBExport.cpp:40:21: cảnh báo: định dạng â%lliâ dự kiến ​​đối số thuộc loại âlong long intâ, nhưng đối số 3 có loại âint64_tâ {hay còn gọi là âlong intâ} [-Wformat=]
   40 | #define INT64FORMAT "%lli"
      | ^~~~~~~
fbexport/FBExport.cpp:462:26: lưu ý: trong phần mở rộng của macro âINT64FORMATâ
  462 | sprintf(str, INT64FORMAT, int64val);
      | ^~~~~~~~~~~~~
fbexport/FBExport.cpp:40:25: lưu ý: chuỗi định dạng được xác định tại đây
   40 | #define INT64FORMAT "%lli"
      | ~~~^
      | |
      | dài dài int
      | %li
fbexport/FBExport.cpp: Trong chức năng thành viên âint FBExport::Export(IBPP::Statement&, FILE*)â:
fbexport/FBExport.cpp:487:18: cảnh báo: ISO C++17 không cho phép trình xác định lớp lưu trữ âregisterâ [-Wregister]
  487 | đăng ký int fc = st->Columns();
      | ^~
fbexport/FBExport.cpp:491:23: cảnh báo: ISO C++17 không cho phép trình xác định lớp lưu trữ âregisterâ [-Wregister]
  491 | for (đăng ký int i=1; i<=fc; i++)
      | ^
fbexport/FBExport.cpp:505:27: cảnh báo: ISO C++17 không cho phép trình xác định lớp lưu trữ âregisterâ [-Wregister]
  505 | for (register int i=1; i<=fc; i++) // ... xuất tất cả các trường ra tệp.
      | ^
fbexport/FBExport.cpp: Trong chức năng thành viên âint FBExport::ExportHuman(IBPP::Statement&, FILE*)â:
fbexport/FBExport.cpp:829:18: cảnh báo: ISO C++17 không cho phép trình xác định lớp lưu trữ âregisterâ [-Wregister]
  829 | đăng ký int fc = st->Columns();
      | ^~
fbexport/FBExport.cpp:835:27: cảnh báo: ISO C++17 không cho phép trình xác định lớp lưu trữ âregisterâ [-Wregister]
  835 | for (register int i=1; i<=fc; i++) // xuất tiêu đề CSV.
      | ^
fbexport/FBExport.cpp:847:27: cảnh báo: ISO C++17 không cho phép trình xác định lớp lưu trữ âregisterâ [-Wregister]
  847 | for (register int i=1; i<=fc; i++) // ... xuất tất cả các trường ra tệp.
      | ^
fbexport/FBExport.cpp:860:27: cảnh báo: ISO C++17 không cho phép trình xác định lớp lưu trữ âregisterâ [-Wregister]
  860 | for (register int i=1; i<=fc; i++) // xuất tiêu đề CSV.
      | ^
fbexport/FBExport.cpp:875:27: cảnh báo: ISO C++17 không cho phép trình xác định lớp lưu trữ âregisterâ [-Wregister]
  875 | for (register int i=1; i<=fc; i++) // ... xuất tất cả các trường ra tệp.
      | ^
fbexport/FBExport.cpp: Trong hàm âint statement_length(FILE*)â:
fbexport/FBExport.cpp:1335:24: cảnh báo: ISO C++17 không cho phép trình xác định lớp lưu trữ âregisterâ [-Wregister]
 1335 | đăng ký int c = 0, tmp = 0;
      | ^
fbexport/FBExport.cpp:1335:31: cảnh báo: ISO C++17 không cho phép trình xác định lớp lưu trữ âregisterâ [-Wregister]
 1335 | đăng ký int c = 0, tmp = 0;
      | ^~~
fbexport/FBExport.cpp:1336:24: cảnh báo: ISO C++17 không cho phép trình xác định lớp lưu trữ âregisterâ [-Wregister]
 1336 | đăng ký int l = 0;
      | ^
fbexport/FBExport.cpp: Trong hàm âchar* read_statement(char*, int, FILE*)â:
fbexport/FBExport.cpp:1376:24: cảnh báo: ISO C++17 không cho phép trình xác định lớp lưu trữ âregisterâ [-Wregister]
 1376 | đăng ký int c = 0, tmp = 0;
      | ^
fbexport/FBExport.cpp:1376:31: cảnh báo: ISO C++17 không cho phép trình xác định lớp lưu trữ âregisterâ [-Wregister]
 1376 | đăng ký int c = 0, tmp = 0;
      | ^~~
fbexport/FBExport.cpp:1377:25: cảnh báo: ISO C++17 không cho phép trình xác định lớp lưu trữ âregisterâ [-Wregister]
 1377 | đăng ký char *P;
      | ^
fbexport/FBExport.cpp: Trong chức năng thành viên âstd::string FBExport::CreateHumanString(IBPP::Statement&, int)â:
fbexport/FBExport.cpp:339:17: cảnh báo: bỏ qua giá trị trả về của âchar* gcvt(double, int, char*)â được khai báo với thuộc tính âwarn_unused_resultâ [-Wunused-result]
  339 | gcvt(fval, 19, str);
      | ~~~^~~~~~~~~~~~~~~~~~~
fbexport/FBExport.cpp:345:17: cảnh báo: bỏ qua giá trị trả về của âchar* gcvt(double, int, char*)â được khai báo với thuộc tính âwarn_unused_resultâ [-Wunused-result]
  345 | gcvt(dval, 19, str);
      | ~~~^~~~~~~~~~~~~~~~~~~
fbexport/FBExport.cpp: Trong hàm thành viên âbool FBExport::CreateString(IBPP::Statement&, int, std::string&)â:
fbexport/FBExport.cpp:452:17: cảnh báo: bỏ qua giá trị trả về của âchar* gcvt(double, int, char*)â được khai báo với thuộc tính âwarn_unused_resultâ [-Wunused-result]
  452 | gcvt(fval, 19, str);
      | ~~~^~~~~~~~~~~~~~~~~~~
fbexport/FBExport.cpp:457:17: cảnh báo: bỏ qua giá trị trả về của âchar* gcvt(double, int, char*)â được khai báo với thuộc tính âwarn_unused_resultâ [-Wunused-result]
  457 | gcvt(dval, 19, str);
      | ~~~^~~~~~~~~~~~~~~~~~~
fbexport/FBExport.cpp: Trong chức năng thành viên âint FBExport::Import(IBPP::Statement&, FILE*)â:
fbexport/FBExport.cpp:706:26: cảnh báo: bỏ qua giá trị trả về của âsize_t fread(void*, size_t, size_t, FILE*)â được khai báo với thuộc tính âwarn_unused_resultâ [-Wunused-result]
  706 | fread(buff, size, 1, fp);
      | ~~~~^~~~~~~~~~~~~~~~~~~
fbexport/FBExport.cpp: Trong hàm thành viên âint FBExport::Init(Arguments*)â:
fbexport/FBExport.cpp:1211:41: cảnh báo: â__builtin___sprintf_chkâ có thể viết một kết thúc nul ở cuối đích [-Wformat-overflow=]
 1211 | sprintf(num, "%d", i+1);
      | ^
Trong tệp bao gồm từ /usr/include/stdio.h:888,
                 từ/usr/gồm/c++/11/cstdio:42,
                 từ /usr/include/c++/11/ext/string_conversions.h:43,
                 từ /usr/include/c++/11/bits/basic_string.h:6606,
                 từ/usr/gồm/C++/11/chuỗi:55,
                 từ ibpp/ibpp.h:91,
                 từ fbexport/FBExport.cpp:44:
/usr/include/x86_64-linux-gnu/bits/stdio2.h:38:34: lưu ý: â__builtin___sprintf_chkâ xuất từ ​​2 đến 11 byte vào đích có kích thước 10
   38 | trả về __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

Tôi có thể làm gì trong trường hợp này?

Trân trọng tomasz

yagmoth555 avatar
lá cờ cn
Xin chào, như một giải pháp thay thế, bạn có thể sao chép cơ sở dữ liệu firebird sang máy Windows để thực hiện tác vụ không? Tôi hỏi vì tôi biết cơ sở dữ liệu firebird là một tệp duy nhất
lá cờ tr
@yagmoth555 - cảm ơn bạn đã trả lời. Tôi không thể làm điều này. Cơ sở dữ liệu là rất lớn. Tôi chỉ cần khoảng 1% dữ liệu.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.