putty를 사용하여 sql.gz 파일을 데이터베이스로 가져오고 삽입하십시오.
sql.gz
SSH를 사용하여 데이터베이스에 파일 을 삽입하고 싶습니다 . 어떻게해야합니까?
예를 들어 이름이 numbers.sql.gz
인 전화 번호의 데이터베이스 가 있습니다.이 파일 유형은 무엇이며이 파일을 내 데이터베이스로 어떻게 가져올 수 있습니까?
파일은 gzip으로 압축 된 (압축 된) SQL 파일로, 확장자가 .sql 인 일반 텍스트 파일입니다. 가장 먼저해야 할 일은 파일을 scp를 통해 데이터베이스 서버에 복사하는 것입니다. PuTTY는 pscp.exe라고 생각합니다 .
# Copy it to the server via pscp
C:\> pscp.exe numbers.sql.gz user@serverhostname:/home/user
그런 다음 서버에 SSH하고 다음을 사용하여 파일의 압축을 풉니 다. gunzip
user@serverhostname$ gunzip numbers.sql.gz
user@serverhostname$ ls
numbers.sql
마지막으로 <
입력 리디렉션 연산자를 사용하여 MySQL 데이터베이스로 가져옵니다 .
user@serverhostname$ mysql -u mysqluser -p < numbers.sql
numbers.sql 파일이 데이터베이스를 생성하지 않지만 이미 존재한다고 예상하는 경우 명령에 데이터베이스도 포함해야합니다.
user@serverhostname$ mysql -u mysqluser -p databasename < numbers.sql
외부에서 MySQL 서버에 직접 연결할 수있는 경우 복사 및 SSH 대신 로컬 MySQL 클라이언트를 사용할 수 있습니다. 이 경우 Windows에서 .gz 파일의 압축을 풀 수있는 유틸리티가 필요합니다. 7zip이 그렇게한다고 믿거 나 Windows 용 gzip / gunzip 바이너리 를 구할 수 있습니다 .
putty와 같은 쉘 프로그램을 사용하여 서버에 로그인하십시오.
명령 줄에 다음 명령을 입력하십시오.
zcat DB_File_Name.sql.gz | mysql -u username -p Target_DB_Name
어디
DB_File_Name.sql.gz
= 가져올 sql.gz 파일의 전체 경로
username
= mysql 사용자 이름
Target_DB_Name
= 데이터베이스를 가져올 데이터베이스 이름
명령 줄에서 Enter 키를 누르면 암호를 입력하라는 메시지가 표시됩니다. MySQL 비밀번호를 입력하십시오.
완료되었습니다!
아카이브를 추출하는 별도의 단계없이 :
# import gzipped-mysql dump
gunzip < DUMP_FILE.sql.gz | mysql --user=DB_USER --password DB_NAME
위의 스 니펫을 사용하여 mysqldump-backups를 다시 가져오고 백업을 위해 다음을 사용합니다.
# mysqldump and gzip (-9 ≃ highest compression)
mysqldump --user=DB_USER --password DB_NAME | gzip -9 > DUMP_FILE.sql.gz
oneliner의 경우 linux 또는 cygwin에서 호스트에서 공개 키 인증을 수행해야합니다. 그렇지 않으면 ssh가 암호를 요구합니다.
gunzip -c numbers.sql.gz | ssh user@host mysql --user=user_name --password=your_password db_name
또는 포트 포워딩을 수행하고 "로컬"연결을 사용하여 원격 mysql에 연결합니다.
ssh -L some_port:host:local_mysql_port user@host
그런 다음 로컬 시스템에서 mysql 연결을 localhost : some_port에 수행하십시오 .
포트 포워딩은 유사한 -L 옵션을 사용하여 putty 에서도 작동합니다. 또는 설정 패널의 트리 아래 어딘가에서 구성 할 수 있습니다.
scp가있는 경우 :
파일을 로컬에서 원격으로 이동하려면 :
$scp /home/user/file.gz user@ipaddress:path/to/file.gz
원격에서 로컬로 파일을 이동하려면 :
$scp user@ipaddress:path/to/file.gz /home/user/file.gz
원격 시스템에 로그인하지 않고 mysql 파일을 내보내려면 :
$mysqldump -h ipaddressofremotehost -Pportnumber -u usernameofmysql -p databasename | gzip -9 > databasename.sql.gz
원격 시스템에 로그인하여 mysql 파일을 가져 오려면 :
$gunzip < databasename.sql.gz | mysql -h ipaddressofremotehost -Pportnumber -u usernameofmysql -p
참고 : 원격 호스트의 ipaddress에 대한 네트워크 액세스 권한이 있는지 확인하십시오.
네트워크 액세스를 확인하려면 :
$ping ipaddressofremotehost
데이터베이스가 많으면 가져오고 덤프가 큽니다 (저는 종종 멀티 기가 바이트 Gzip 덤프로 작업합니다).
여기 mysql에서 할 수있는 방법이 있습니다.
$ mkdir databases
$ cd databases
$ scp user@orgin:*.sql.gz . # Here you would just use putty to copy into this dir.
$ mkfifo src
$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.41-0
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> create database db1;
mysql> \! ( zcat db1.sql.gz > src & )
mysql> source src
.
.
mysql> create database db2;
mysql> \! ( zcat db2.sql.gz > src & )
mysql> source src
이것이 가진 유일한 이점
zcat db1.sql.gz | mysql -u root -p
암호를 여러 번 입력하지 않고도 쉽게 여러 번 할 수 있다는 것입니다.
mysql 덤프가 .gz 파일 인 경우 $ gunzip mysqldump.sql.gz를 입력하여 파일의 압축을 풀려면 gunzip이 필요합니다.
이렇게하면 .gz 파일의 압축이 풀리고 mysqldump.sql이 같은 위치에 저장됩니다.
다음 명령을 입력하여 SQL 데이터 파일을 가져옵니다.
$ mysql -u 사용자 이름 -p -h localhost test-database <mysqldump.sql 암호 : _
현재 서버에 덤프 파일 SQL.gz 만들기
$ sudo apt-get install pigz pv
$ pv | mysqldump --user=<yourdbuser> --password=<yourdbpassword> <currentexistingdbname> --single-transaction --routines --triggers --events --quick --opt -Q --flush-logs --allow-keywords --hex-blob --order-by-primary --skip-comments --skip-disable-keys --skip-add-locks --extended-insert --log-error=/var/log/mysql/<dbname>_backup.log | pigz > /path/to/folder/<dbname>_`date +\%Y\%m\%d_\%H\%M`.sql.gz
선택 사항 : 연결을위한 명령 인수
--host=127.0.0.1 / localhost / IP Address of the Dump Server
--port=3306
Importing the dumpfile created above to a different Server
$ sudo apt-get install pigz pv
$ zcat /path/to/folder/<dbname>_`date +\%Y\%m\%d_\%H\%M`.sql.gz | pv | mysql --user=<yourdbuser> --password=<yourdbpassword> --database=<yournewdatabasename> --compress --reconnect --unbuffered --net_buffer_length=1048576 --max_allowed_packet=1073741824 --connect_timeout=36000 --line-numbers --wait --init-command="SET GLOBAL net_buffer_length=1048576;SET GLOBAL max_allowed_packet=1073741824;SET FOREIGN_KEY_CHECKS=0;SET UNIQUE_CHECKS = 0;SET AUTOCOMMIT = 1;FLUSH NO_WRITE_TO_BINLOG QUERY CACHE, STATUS, SLOW LOGS, GENERAL LOGS, ERROR LOGS, ENGINE LOGS, BINARY LOGS, LOGS;"
Optional: Command Arguments for connection
--host=127.0.0.1 / localhost / IP Address of the Import Server
--port=3306
mysql: [Warning] Using a password on the command line interface can be insecure. 1.0GiB 00:06:51 [8.05MiB/s] [<=> ]
The optional software packages are helpful to import your database SQL file faster
- with a progress view (pv)
- Parallel gzip (pigz/unpigz) to gzip/gunzip files in parallel
for faster zipping of the output
참고URL : https://stackoverflow.com/questions/10971597/import-and-insert-sql-gz-file-into-database-with-putty
'Programing' 카테고리의 다른 글
업로드 된 파일을 디렉토리에 저장하기 전에 이름을 바꾸는 방법은 무엇입니까? (0) | 2020.11.17 |
---|---|
org.hibernate.hql.internal.ast.QuerySyntaxException : 테이블이 매핑되지 않음 (0) | 2020.11.17 |
필수 필드에 별표를 표시하도록 LabelFor를 수정하려면 어떻게해야합니까? (0) | 2020.11.16 |
OKHTTP에서 바이너리 파일 다운로드 (0) | 2020.11.16 |
Angular 4.3-HttpClient 설정 매개 변수 (0) | 2020.11.16 |