mysqdump에 없는 경우 테이블 만들기
내 sqdump에 적절한 테이블 만들기 옵션 [만약 존재하지 않는다면]을 추가할 수 있는 방법이 있는지 궁금합니다.무슨 생각 있어요?
SQL 파일에서 이를 사용해 보십시오.
sed 's/CREATE TABLE/CREATE TABLE IF NOT EXISTS/g' <file-path>
혹은 저장하기 위해
sed -i 's/CREATE TABLE/CREATE TABLE IF NOT EXISTS/g' <file-path>
이상적이지는 않지만 효과는 있습니다 :P
한 소식통에 따르면 mysqldump에는 이 옵션이 없습니다.
당신은 사용할 수 있습니다.--force
덤프 파일을 다시 가져올 때 옵션을 선택합니다. 여기서 MySQL은 중복 테이블을 만들기 위해 발생한 오류를 무시합니다.그러나 이 방법을 사용하면 다른 오류도 무시됩니다.
그렇지 않으면 모든 경우를 대체하는 스크립트를 통해 덤프 파일을 실행할 수 있습니다.CREATE TABLE
와 함께CREATE TABLE IF NOT EXISTS
.
사용.sed
@Paewel이 설명한 대로 잘 작동합니다.그럼에도 불구하고 데이터를 절대적으로 필요한 것보다 더 많은 잠재적 오류 소스를 통해 전달하는 것이 마음에 들지 않을 수도 있습니다.이 경우 두 개의 개별 덤프를 사용할 수 있습니다.
- 테이블 정의가 들어 있는 첫 번째 덤프(
--no-data --skip-add-drop-table
) - 데이터만 있는 두 번째 덤프(
--no-create-info --skip-add-drop-table
)
하지만 주의해야 할 사항이 몇 가지 있습니다(예: 트리거).자세한 사항은 설명서를 확인합니다.
당신이 원하는 것이 아니라, 당신과 함께.--add-drop-table
모든 CREATE에는 그에 따른 DROP TABLE 문이 앞에 붙습니다.
그렇지 않으면 간단한 검색/바꾸기(예:sed
).
덤프 출력은 DROP과 CREATE의 조합이므로 DROP 문을 제거하고 CREATE 문을 변경하여 유효한 (논리적인) 출력을 구성해야 합니다.
mysqldump --no-data -u root <schema> | sed 's/^CREATE TABLE /CREATE TABLE IF NOT EXISTS /'| sed 's/^DROP TABLE IF EXISTS /-- DROP TABLE IF EXISTS /' > <schema>.sql
이것으로 bash 스크립트를 만듭니다.예: dump.shtouch dump.sh
실행 가능한지 확인합니다.chmod 0750 dump.sh
dump.sh :
#!/bin/bash
name="mysqldump_${HOSTNAME}_$(date +'%Y-%m-%d_%H-%M').sql"
echo "Using filename: ${name}"
mysqldump --replace --skip-add-drop-table --skip-comments izon -p > "${name}"
sed -i 's/CREATE TABLE/CREATE TABLE IF NOT EXISTS/g' "${name}"
그 끝에 'g'(global)가 없으면 이들은 훨씬 더 빨라질 것입니다.
예:
mysqldump -e <database> | sed 's/^CREATE TABLE /CREATE TABLE IF NOT EXISTS /' > <database>.sql
PowerShell을 사용하여 Windows 7에서 텍스트 찾기 및 바꾸기
명령 프롬프트를 열고 아래 명령을 사용합니다.
powershell -Command "(gc E:\map\map_2017.sql) -replace 'CREATE TABLE', 'CREATE TABLE IF NOT EXISTS' | Out-File E:\map\map_replaced.sql"
첫 번째 매개 변수는 파일 경로입니다.
두 번째 매개 변수는 'find string'입니다.
세 번째 매개 변수는 'replace string'입니다.
이 명령은 대체된 텍스트로 새 파일을 만듭니다.동일한 파일에 내용을 교체하여 저장하려면 '|'(파이프)부터 시작하는 Command를 제거합니다.
언급URL : https://stackoverflow.com/questions/2220469/create-table-if-not-exists-from-mysqldump
'sourcetip' 카테고리의 다른 글
MySQL보다 SQLite가 더 빠릅니까? (0) | 2023.09.15 |
---|---|
몇 번 실행 후 쿼리가 매우 느립니다. (0) | 2023.09.15 |
CSS를 이용하여 자녀 DIV의 폭을 부모 DIV보다 넓히는 방법이 있습니까? (0) | 2023.09.15 |
오류: "정의되지 않은 공급자가 있습니다!일반적으로 이것은 당신이 순환적인 의존 관계를 가지고 있다는 것을 의미합니다." (0) | 2023.09.15 |
선택 후 동작 트리거 선택2 (0) | 2023.09.15 |