2013-06-29 24 views
23

Điều này nghe có vẻ như nó phải là một điều rất dễ dàng để làm, tuy nhiên, tôi không thể tìm thấy bất cứ nơi nào làm thế nào để làm điều đó.In ra màn hình trong tập tin .sql postgres

Tôi có một tập tin sql Tôi đang xây dựng để nâng cấp lên ứng dụng của tôi làm thay đổi bảng biểu, chèn/cập nhật vv

Tôi muốn viết ra màn hình sau mỗi lệnh kết thúc.

Vì vậy, ví dụ nếu tôi có cái gì đó như:

insert into X... 

Tôi muốn nhìn thấy một cái gì đó như thế nào,

Bắt đầu để chèn vào bảng X

Finished chèn vào bảng X

Điều này có thể thực hiện được ở Postgres không?

+2

Để thực thi bằng psql, bạn có thể thêm '\ echo Bắt đầu chèn vào bảng X', v.v. vào kịch bản lệnh. – wildplasser

+0

Có thể trùng lặp của [Làm thế nào để đưa ra một thông báo trong PostgreSQL?] (Http://stackoverflow.com/questions/18828127/how-to-raise-a-notice-in-postgresql) – FuriousFolder

Trả lời

28

Nếu bạn chỉ đang nạp một lượng lớn SQL vào psql thì bạn có một vài tùy chọn.

Bạn có thể chạy psql với --echo-all:

-a
--echo-all
In tất cả các dòng đầu vào đến đầu ra tiêu chuẩn như họ được đọc. Điều này hữu ích hơn cho việc xử lý tập lệnh so với chế độ tương tác . Điều này tương đương với việc đặt biến số ECHO thành all.

Điều đó và tùy chọn khác "echo mọi thứ thuộc loại này" (xem the manual) có thể quá ồn ào. Nếu bạn chỉ muốn in mọi thứ bằng tay, sử dụng \echo:

\echotext [...]
Prints các đối số đầu ra tiêu chuẩn, cách nhau bằng một không gian và theo sau là một dòng mới. Điều này có thể hữu ích để xen kẽ thông tin trong đầu ra của tập lệnh.

Vì vậy, bạn có thể nói:

\echo 'Starting to insert into table X' 
-- big pile of inserts go here... 
\echo 'Finished inserting into table X' 
+1

HAHAHAHA ... Tôi thấy "\ echo "nhưng tôi đã có dấu gạch chéo sai! –

3

Có lẽ một cách tốt hơn để làm điều đó. Nhưng nếu bạn cần phải sử dụng vani SQL, hãy thử này:

SELECT NULL AS "Starting to insert into table X"; 
-- big pile of inserts go here... 
SELECT NULL AS "Finished inserting into table X"; 
5

Via: https://stackoverflow.com/a/18828523/2014857

DO language plpgsql $$ 
BEGIN 
    RAISE NOTICE 'hello, world!'; 
END 
$$; 

Tùy thuộc vào những gì bạn đang làm, tôi muốn được lo lắng về thực hiện một loạt các khối mã ẩn danh . Bạn có thể xem xét việc lưu trữ ở trên như là một hàm, và đi qua trong bất cứ giá trị nào bạn muốn đăng nhập.

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