programing

MySQL 데이터베이스로 여러 SQL 파일을 쉽게 가져오는 방법

bestcode 2022. 11. 6. 10:35
반응형

MySQL 데이터베이스로 여러 SQL 파일을 쉽게 가져오는 방법

몇 개 있어요sql모든 파일을 MySQL 데이터베이스로 한 번에 Import합니다.

나는 간다PHPMyAdmin데이터베이스에 접속하여import파일을 선택하고 Import합니다.파일이 몇 개 이상 있으면 시간이 오래 걸립니다.

다른 파일을 Import 할 수 있는 파일 등 여러 파일을 Import 할 수 있는 더 좋은 방법이 있는지 알고 싶습니다.

사용하고 있다WAMP컴퓨터에 추가 프로그램을 설치하지 않아도 되는 솔루션을 원합니다.

Windows 의 경우는, 단말기를 열고, 컨텐츠 폴더에 액세스 해, 다음과 같이 기입합니다.

copy /b *.sql all_files.sql

이렇게 하면 모든 파일이 하나로 통합되기 때문에 PhpMyAdmin을 사용하여 Import하는 것이 매우 빠릅니다.

LinuxmacOS에서는 @BlackCharly가 지적한 바와 같이 다음과 같은 이점이 있습니다.

cat *.sql  > .all_files.sql

중요사항:직접 실행하는 것은 잘 될 것입니다만, 시스템에 의해서 파일이 추가되기 때문에, 대량의 출력 파일이 점점 커지는 루프 상태에 빠질 가능성이 있습니다.이를 피하기 위해 두 가지 해결책이 있습니다.

A) 결과를 다른 디렉토리에 저장하여 안전하게 합니다(Thanks @mosh).

mkdir concatSql
cat *.sql  > ./concatSql/all_files.sql

B) 확장자가 다른 파일에 합성한 후 이름을 변경한다.(고마워 @William Turrell)

cat *.sql  > all_files.sql1
mv all_files.sql1 all_files.sql

이것이 내가 찾은 가장 쉬운 방법이다.

Windows(powershell):

cat *.sql | C:\wamp64\bin\mysql\mysql5.7.21\bin\mysql.exe -u user -p database

에 대한 경로를 삽입해야 합니다.WAMP - MySQL시스템 패스를 사용하고 있습니다.

Linux(Bash):

cat *.sql | mysql -u user -p database

  1. Goto cmd

  2. 명령 프롬프트 C:\users\를 입력합니다.Usersname>cd [.sql tables 폴더 경로]
    Enter 키를 누릅니다.
    예: C:\users\Usersname>cd E:\project\database

  3. Type 명령 프롬프트
    C:\users\Usersname> [.sql 폴더의 드라이브(디렉토리) 이름]
    Enter 키를 누릅니다.
    예: C:\users\사용자명>E:

  4. 단일 파일에 모든 .sql 파일(테이블)의 marge 명령 프롬프트를 입력합니다.
    /b *.sql newdatabase를 복사합니다.sql
    Enter 키를 누릅니다.
    EX: E:\project\database>copy /b *.sql newdatabase.sql

  5. 디렉토리 폴더에서 여러 .sql(파일) 테이블 파일을 단일 파일로 병합할 수 있습니다.
    예: E:\project\database

2년 조금 넘었다는 거 알아요다만, 이 방법을 찾고 있었습니다만, 투고된 솔루션에 그다지 만족하고 있지 않았습니다(잘 동작하고 있습니다만, Import시에 조금 더 자세한 정보가 필요했습니다).모든 SQL 파일을 하나로 결합할 경우 진행률 업데이트가 제공되지 않습니다.

그래서 저는 계속해서 답을 찾았고, 같은 답을 찾는 미래의 사람들을 위해 제가 찾은 것을 게시할 수 있는 좋은 장소라고 생각했습니다.다음은 폴더에서 여러 SQL 파일을 가져오는 Windows의 명령줄입니다.이 작업은 mysql.exe가 있는 디렉토리에 있는 동안 명령줄에서 수행합니다.

for /f %f in ('dir /b <dir>\<mask>') do mysql --user=<user> --password=<password> <dbname> < <dir>\%f

몇 가지 가정된 값(예:):

for /f %f in ('dir /b c:\sqlbackup\*.sql') do mysql --user=mylogin --password=mypass mydb < c:\sqlbackup\%f

폴더에 SQL 백업 세트가 두 개 있는 경우 *.sql을 mydb_*.sql과 같은 더 구체적인 것으로 변경할 수 있습니다.

입력만:

cat *.sql |mysql -uroot -p

mysql은 모든 SQL 파일을 순서대로 Import합니다.

mysql 쉘을 다음과 같이 입력합니다.

mysql --host=localhost --user=password --password =db

그런 다음 source 명령어와 세미콜론을 사용하여 명령어를 구분합니다.

source file1.sql; source file2; source file3;

이를 위해 for 루프를 사용할 수도 있습니다.

#!/bin/bash
for i in *.sql
do
    echo "Importing: $i"
    mysql your_db_name < $i
    wait
done 

원천

이 파일을 .bat로 저장하고 실행하고 괄호 안의 변수를 변경합니다.

@echo off
title Mysql Import Script
cd (Folder Name)
 for %%a in (*) do (
     echo Importing File  : %%a 
     mysql -u(username) -p(password)  %%~na < %%a
)
pause

데이터베이스 이름을 가진 하나의 데이터베이스만 수정(%%~na)하는 경우.

가장 쉬운 해결책은 모든 SQL 파일을 복사/붙여넣는 것입니다.

파일 Import를 위해 일부 SQL 마크업을 추가할 수 없습니다(Import된 파일은 서버가 아닌 컴퓨터에 있을 것이며 MySQL은 외부 SQL 파일에 대한 Import 마크업을 관리하지 않을 것입니다).

Windows에서 Windows powershell을 열고 sql 파일이 있는 폴더로 이동하여 이 명령을 실행합니다.

cat *.sql |  C:\xampp\mysql\bin\mysql.exe -u username -p databasename

명령 프롬프트에 다음 명령을 입력하면 모든 sql 파일이 단일 sql 파일로 바인드됩니다.

c:/xampp/mysql/bin/sql/ type *.sql > OneFile.sql;

여러 SQL 파일에서 하나의 데이터베이스로 가져오기

1단계: 폴더로 이동하여 파일 'import-script'를 만듭니다.실행 권한이 있는 sh' (파일에 대한 권한 부여:chmod u+x import-script.sh)

#!/bin/bash
for i in *.sql
do
    echo "Importing: $i"
    mysql -u USERNAME -pPASSWORD DBNAME < $i
    wait
done 

중요한 것은 -p와 PASSWORD가 공간을 추가하지 않았다는 것입니다.

스텝 2: 단말기에서 이 명령어를 실행합니다../import-script.sh

Windows 사용자의 경우,

왼쪽의 phpMyadmin 인터페이스에서 데이터베이스를 선택하고 Windows 폴더에서 모든 파일을 phpMyadmin의 웹 UI로 드래그드롭할 수 있습니다.

언급URL : https://stackoverflow.com/questions/9000147/how-to-easily-import-multiple-sql-files-into-a-mysql-database

반응형