데이터베이스 내의 모든 테이블을 하나의 스테이트먼트로 기술하려면 어떻게 해야 합니까?
데이터베이스 내의 모든 테이블을 설명할 수 있는 문장이 있습니까?
다음과 같은 경우:
describe * from myDB;
라는 말은 없다.describe
모든 테이블이 동시에 표시됩니다.그러나 다음과 같은 작업을 수행할 수 있습니다.
SELECT * FROM information_schema.columns WHERE table_schema = 'db_name';
왜냐하면 다른 제안들은 화면을 매우 엉망으로 만들거나 그냥 여기서 묘기를 부리지 않았기 때문이다.
describe table_a; describe table_b; describe table_c;
등등
Linux 방식을 사용하고 있습니다.먼저 ~/.my.cnf를 생성하여 mysql 사용자 이름과 비밀번호를 저장합니다.다음으로 다음 스니펫을 사용하여 Linux 터미널에서 실행합니다.
테이블 목록을 생성하고 헤더와 awk를 필터링하여 열을 생성합니다.그런 다음 동일한 방법을 사용하여 table_name을 기술합니다.
for i in $(mysql MYDBNAME -e 'SHOW TABLES' | grep -v "Tables_in" | awk '{print $1}'); do echo "TABLE: $i"; mysql MYDBNAME -e "DESC $i"; done
이게 도움이 됐으면 좋겠다.
이것은 @AlexShaffer의 뛰어난 코멘트를 변형한 것으로, Mac 단말기의 mysql 모니터가 테이블을 기술하도록 요구되었을 때 출력되는 내용을 반영하도록 수정되었습니다.
USE information_schema;
SELECT TABLE_NAME 'Table', COLUMN_NAME 'Field', COLUMN_TYPE 'Type', IS_NULLABLE 'Null',
COLUMN_KEY 'Key', COLUMN_DEFAULT 'Default', EXTRA 'Extra'
FROM information_schema.columns
WHERE table_schema = 'your_db'
ORDER BY TABLE_NAME;
mysql -B -N -u root -pPASSWORD -h somehost \
-e "SELECT DISTINCT CONCAT('describe ', table_name, ';') AS query FROM information_schema.tables WHERE table_schema='DATABASE_NAME_HERE' " | \
mysql -B -N -u root -pPASSWORD -h somehost DATABASE_NAME_HERE
아래와 같이 bash 스크립트를 작성해주세요.자세한 내용이 표시됩니다.
LINUX만 - BASH 스크립트 - descript-all-tables.쉿
#!/bin/sh
echo ""
read -p 'MySQL db: ' DB
echo ""
read -p 'MySQL user: ' USER
echo ""
read -e -p 'MySQL host: ' -i "localhost" HOSTNAME
echo ""
read -s -p 'MySQL password: ' PASSWORD
echo ""
mysql -N -u${USER} ${DB} -p${PASSWORD} -h ${HOSTNAME} --execute="show tables" | while read table; do mysql -u${USER} -h ${HOSTNAME} ${DB} -p${PASSWORD} -v -t --execute="describe $table"; echo -e "\n"; done
사용방법 - /bin/sh descript-all-tables.쉿
mysql 프롬프트에서 명령어를 실행할 때처럼 결과를 "table" 형식으로 표시할 수 있는 방법이 있는지 여부를 알 수 없습니다.다만, 세로 포맷의 모든 테이블에 대해 설명합니다.
mysql -N -uUSER -pPASSWORD DATABASE_NAME --execute="show tables" | while read table; do mysql -uUSER -pPASSWORD DATABASE_NAME --execute="describe $table \G"; done
기본적으로는 데이터베이스 내의 모든 테이블을 Mysql이 기술하는 것은 아닙니다.데이터베이스의 주요 의도 - 단순히 권력을 분산하고 메타데이터를 관리하지만 데이터를 인덱싱하지는 않습니다.
데이터베이스에 연결합니다.mysql [ - u username ][ - hhostname ] database - name
모든 데이터베이스를 나열하려면 MySQL 프롬프트에 show databases를 입력합니다.
다음으로 적절한 데이터베이스를 선택합니다.MyDB 사용;
데이터베이스 내의 모든 테이블을 나열합니다.show tables ;
테이블 설명: description table-name 또는 descript table-name
언급URL : https://stackoverflow.com/questions/20020728/how-can-i-describe-all-tables-in-the-database-through-one-statement
'programing' 카테고리의 다른 글
display()가 C의 링크 리스트를 사용하여 큐에 세그멘테이션에러를 발생시키는 이유 (0) | 2022.12.01 |
---|---|
SQL Attendance 데이터베이스 설계 (0) | 2022.11.22 |
Python에서 "해시블"은 무엇을 의미합니까? (0) | 2022.11.22 |
최대 절전 모드를 사용하는 Mariadb 동적 열 (0) | 2022.11.22 |
클래스는 클래스를 확장하고 인터페이스를 구현할 수 있습니까? (0) | 2022.11.22 |