mysql에 데이터가 없는 데이터베이스 구조 복사(빈 테이블 포함)
MySQL에서 데이터 없이 데이터베이스 구조를 복사할 수 있는 방법이 있습니까? 따라서 새 데이터베이스는 복사된 데이터베이스와 같지만 빈 테이블이 있습니다.
몇 가지 제안을 받은 후 명령어를 시도했지만 구문 오류가 발생했습니다.username = root
그리고.password = nothing
. 디폴트인 것 같아요.나는 명령을 따르려고 한다.
mysqldump -u root -p -d xyz_db | mysql -u root -p -Dnew_db
명령에서 놓치거나 잘못 배치한 것이 무엇입니까?
mysqldump -u user -ppass -d olddb | mysql -u user -ppass -D newdb
새 데이터베이스가 이미 있어야 합니다.그-d
mysqldump 명령의 플래그를 지정하면 데이터 복사가 금지됩니다.
깃발 사이에 띄어쓰기가 없다.-p
패스워드를 입력합니다.
mysqldump를 사용하여 백업을 수행하고 명령줄에서 mysql을 사용하여 복원할 수 있습니다.
백업 데이터베이스용
$ mysqldump -u root-pPassword -P3309 --routines --no-data testdb > "d:\dbwithnodata.sql"
데이터베이스 복원용
$ mysql -u root-pPassword -P3309 newdb < "d:\dbwithnodata.sql"
MYSQL 데이터베이스 구조를 다음과 같이 백업할 수 있습니다.
mysqldump -u username –p -d database_name > backup.sql
(커맨드 라인에서 패스워드를 입력하지 말아 주세요.이것은, 시큐러티의 리스크로 연결됩니다.기본적으로는 MYSQL이 비밀번호를 요구합니다.)또한 데이터베이스에 테이블을 작성할 수 있습니다.
mysql -u username -p new_database < backup.sql
이제 파이프를 사용하여 첫 번째 명령어의 출력을 두 번째 명령어의 출력으로 제공할 수 있으며 더 이상 필요하지 않습니다.backup.sql
mysqldump -u username –p -d database_name|mysql -u username -p new_database
의 모든 테이블이 다음 위치에 생성됩니다.new_database
데이터를 사용하지 않습니다.
electrictboolbox.com/mysqldump-schema-only 에서 :
데이터가 없는 모든 테이블의 데이터베이스 구조 덤프 -d 플래그를 추가하여 출력에 데이터가 포함되지 않음을 나타냅니다.여기서 "my database"는 덤프할 데이터베이스의 이름이고 "someuser"는 데이터베이스 연결에 사용되는 로그인 이름입니다.다음 명령어는 지정된 MySQL 데이터베이스 내의 모든 테이블의 테이블 구조를 덤프합니다.
$ mysqldump -d -u someuser -p mydatabase
-d 플래그는 덤프에 데이터를 포함하지 않음을 나타냅니다.또는 기억하기 쉬운 경우 --no-data를 대신 사용할 수 있습니다.
$ mysqldump --no-data -u someuser -p mydatabase
-u 플래그는 패스워드가 제공되는 사용자 이름과 -p 플래그를 나타냅니다.를 누르면 비밀번호를 입력하라는 메시지가 나타납니다.
또는 명령줄에 비밀번호를 입력할 수도 있지만 -p 플래그와 비밀번호 사이에는 공백이 없어야 합니다.예를 들어, 패스워드가 「애플」인 경우는, 다음의 순서에 따릅니다.
$ mysqldump --no-data -u someuser -papples mydatabase
$ mysqldump -d -u someuser -p mydatabase > mydatabase.sql # This will output to a sql file
이것을 사용해 보세요.
$ mysqldump --no-data -h localhost -u root -p database_name > imported_db_name.sql
매뉴얼에 기재되어 있는 바와 같이 데이터베이스 복사에서는 덤프를 mysql 클라이언트에 직접 파이프로 연결할 수 있습니다.
mysqldump db_name | mysql new_db_name
MyISAM을 사용하고 있다면 파일을 복사할 수 있지만 추천하지 않습니다.좀 수상하네요.
다양한 좋은 답변에서 통합
mysqldump 명령어와 mysql 명령어 모두 다음과 같은 연결 상세 설정 옵션을 사용할 수 있습니다.
mysqldump -u <user name> --password=<pwd> <original db> | mysql -u <user name> -p <new db>
::mysqldump -u root -pmypassword old_database | mysql -u root -pmypassowrd new_database
mysqldump -d
PROCEDURE 「」, 「」 수 에, 하지 않습니다.'old_db'.tb_name
바꿔서 할 것 같아요.'new_db'.tb_name
mysql -u user -ppass -e "CREATE DATABASE new_db"
mysqldump -u user -ppass -d old_db | # pull structure -d flag
sed "s/\`old_db\`\./\`new_db\`\./g" | # solve foreign_keys, triggers etc
sed 's/AUTO_INCREMENT=[0-9]\+/''/g' | # reset indexes
mysql -u user -ppass new_db # push structure
아래는 타겟 데이터베이스를 만들고 몇 가지 검사를 수행하는 bash 스크립트입니다.
# . / db _ clone 。sh old_db new_db
는 파일을 사용합니다./root/.mysqlcnx
하여(-u -pPass를 )(-u root -pPass) credential을 사용합니다.
[client]
user = root # or powerfull_user with GRANTS
password = pass_string
host = localhost
데이터베이스를 복제하기 위한 다음 스크립트 [확신성을 위해 가상 머신에서 실험]
#!/bin/bash
if [ $# -lt 2 ]; then
echo "syntax:\n.\db_clone.sh source_db_name target_db_name [--drop]\n"
exit 1
fi
# checking target database $2 exits
tg_db=$(mysql --defaults-extra-file=~/.mysqlcnx -s -N -e "SELECT count(*)>0 FROM
information_schema.SCHEMATA where SCHEMA_NAME='${2}'")
if [ $tg_db = '1' ]; then
# checking target database has tables
tg_tb=$(mysql --defaults-extra-file=~/.mysqlcnx -s -N -e " SELECT count(*) > 0
FROM information_schema.TABLES WHERE TABLE_SCHEMA='${2}'")
if [ $tg_tb = '1' ]; then
if [ $# -eq 3 ] && [ "$3" = '--drop' ]; then
echo "TYPE 'YES' (case sensitive) TO OVERRIDE"
read opt # request confirmation
if [ "$opt" != "YES" ]; then
echo "OPERATION CANCELED!"
exit 1
fi
else
printf "DATABASE \"${2}\" EXISTS AND HAS TABLES\nUSE --drop as 3rd arg to override!\n"
exit 1
fi
fi
else
mysql --defaults-extra-file=~/.mysqlcnx -e "CREATE DATABASE \`${2}\`"
fi
echo "CREATING ${2}"
mysqldump --defaults-extra-file=~/.mysqlcnx -d $1 | # dump source
sed "s/\`${1}\`\./\`${2}\`\./g" | # solving `source_db`.tb_name
sed 's/AUTO_INCREMENT=[0-9]\+/''/g' | # solving AUTO_INCREMENT=1
mysql --defaults-extra-file=~/.mysqlcnx $2 # populating target_db
echo "DONE"
언급URL : https://stackoverflow.com/questions/14107919/copy-database-structure-without-data-in-mysql-with-empty-tables
'programing' 카테고리의 다른 글
수집되지 않은 유형 오류: (중간값)(...)이 함수가 아닙니다. (0) | 2022.10.10 |
---|---|
PHP "php://input" vs $_POST (0) | 2022.10.10 |
JavaScript를 사용하여 CSS 값 가져오기 (0) | 2022.10.10 |
IntelliJ가 선언을 찾을 수 없습니다. (0) | 2022.10.10 |
매개 변수를 사용하여 메서드를 문서화하려면 어떻게 해야 합니까? (0) | 2022.10.10 |