2009-03-13 33 views
6

Đây là vấn đề của tôi: Tôi đang xem ứng dụng cơ sở dữ liệu dựa trên Postgresql của ai đó lần đầu tiên và cố gắng tìm ra những gì đang gây ra các cảnh báo/lỗi nhất định trong logfile của hệ thống. Tôi không biết gì về lược đồ cơ sở dữ liệu. Tôi không biết gì về mã nguồn. Nhưng tôi cần phải theo dõi vấn đề.Tìm kiếm một chuỗi 'một nơi nào đó' trong cơ sở dữ liệu

Tôi có thể dễ dàng tìm kiếm nội dung chuỗi của mã dựa trên tệp văn bản như php và perl, sử dụng lệnh UNIX 'grep'; ngay cả đối với các tệp nhị phân được biên dịch, tôi có thể sử dụng các lệnh 'find' và 'strings' của UNIX.

Vấn đề của tôi là một số văn bản được tạo trong tệp nhật ký đến từ chính cơ sở dữ liệu. Kiểm tra logfile lỗi cho cơ sở dữ liệu sản lượng không có gì hữu ích vì không có vấn đề với các truy vấn được sử dụng bởi ứng dụng.

Điều tôi muốn làm là tìm kiếm toàn bộ tất cả các cột và tất cả các bảng của cơ sở dữ liệu cho một chuỗi. Đây có phải là có thể, và như thế nào?

Cảm ơn trước cho bất kỳ con trỏ nào. Môi trường được sử dụng là Postgresql 8.2, nhưng nó sẽ hữu ích để biết làm thế nào để làm điều này trong các hương vị khác của cơ sở dữ liệu quan hệ là tốt.

Trả lời

11

Nó có thể không tối ưu, nhưng vì tôi đã biết cách grep một tập tin văn bản, tôi sẽ chỉ bí mật cơ sở dữ liệu vào một tập tin văn bản và grep đó. Việc chuyển đổi cơ sở dữ liệu sang một tệp văn bản trong trường hợp này có nghĩa là bán phá giá dữ liệu bằng cách sử dụng pg_dump.

Cách nhanh nhất/dễ nhất/hiệu quả nhất không phải lúc nào cũng thanh lịch ...

+0

Nhanh chóng và bẩn: Tôi thích nó. Giải pháp này hoạt động tốt cho những người trong chúng ta quen thuộc hơn với regex hơn so với các truy vấn và hàm SQL. cảm ơn! –

1

Tôi không quen với Postgresql, nhưng tôi nghĩ rằng, giống SQL Server, nó có các bảng/khung nhìn siêu dữ liệu mô tả lược đồ cơ sở dữ liệu (cho SQL Server 2005+, tôi sẽ giới thiệu bạn với sys.tables và sys.columns). Ý tưởng sẽ là tạo ra một loạt các truy vấn đặc biệt dựa trên lược đồ bảng, mỗi tìm kiếm phù hợp trong một kết hợp bảng/trường cụ thể và khớp các trận đấu vào bảng "log".

1

Tôi đã sử dụng các biến thể của this trong quá khứ.

Các vấn đề liên quan