Programing

putty를 사용하여 sql.gz 파일을 데이터베이스로 가져오고 삽입하십시오.

crosscheck 2020. 11. 16. 07:52
반응형

putty를 사용하여 sql.gz 파일을 데이터베이스로 가져오고 삽입하십시오.


sql.gzSSH를 사용하여 데이터베이스에 파일 을 삽입하고 싶습니다 . 어떻게해야합니까?

예를 들어 이름이 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

반응형