Mi chiedo se esiste un modo in mysqldump per aggiungere l'opzione di creazione tabella appropriata [SE NON ESISTE]. Qualche idea?Crea una tabella se non esiste da mysqldump
risposta
In base a one source, mysqldump non presenta questa opzione.
È possibile utilizzare l'opzione --force
quando si reimporta il file di dump, in cui MySQL ignorerà gli errori generati dai tentativi di creare tabelle duplicate. Tuttavia, si noti che con questo metodo, anche altri errori sarebbero ignorati.
In caso contrario, è possibile eseguire il file di dump tramite uno script che sostituisce tutte le occorrenze di CREATE TABLE
con CREATE TABLE IF NOT EXISTS
.
Non è ciò che si potrebbe desiderare, ma con --add-drop-table
ogni CREATE è preceduto dall'istruzione DROP TABLE.
Altrimenti, vorrei fare una semplice ricerca/sostituzione (ad es. Con sed
).
tenta di utilizzare questa sul vostro file SQL:
sed 's/CREATE TABLE/CREATE TABLE IF NOT EXISTS/g' <file-path>
o per salvare
sed -i 's/CREATE TABLE/CREATE TABLE IF NOT EXISTS/g' <file-path>
non è l'ideale ma funziona: P
Utilizzando sed
come descritto da opere @Pawel bene. Tuttavia potrebbe non piacerti l'idea di piping i tuoi dati attraverso più potenziali fonti di errore di quanto assolutamente necessario. In questo caso si possono utilizzare due discariche distinte:
- primi discarica contenente definizioni di tabella (
--no-data --skip-add-drop-table
) - secondo discarica con solo i dati (
--no-create-info --skip-add-drop-table
)
ci sono alcune altre cose per prendersi cura di comunque (es. inneschi). Controlla il manuale per i dettagli.
creare uno script di bash con questo ... assicurarsi di renderlo eseguibile. (chmod 0777 dump.sh)
discarica.sh
#!/bin/bash
name=$HOSTNAME
name+="-"
name+=$(date +"%Y-%m-%d.%H:%M")
name+=".sql"
echo $name;
mysqldump --replace --skip-add-drop-table --skip-comments izon -p > "$name"
sed -i 's/CREATE TABLE/CREATE TABLE IF NOT EXISTS/g' "$name"
per trovare e sostituire il testo su Windows 7 utilizzando PowerShell
prompt dei comandi Aprire e utilizzare il comando di seguito
powershell -Command "(gc E:\map\map_2017.sql) -replace 'CREATE TABLE', 'CREATE TABLE IF NOT EXISTS' | Out-File E:\map\map_replaced.sql"
primo param è il percorso del file
Il secondo parametro è 'f stringa ind'
Terzo param è 'sostituire stringa'
Questo comando creerà un nuovo file con il testo sostituito. Rimuovi il comando a partire da '|' (pipe) se si desidera sostituire e salvare i contenuti sullo stesso file.
SED sarà molto più veloce, senza la 'g' (globale) al suo termine:
esempio:
mysqldump -e <database> | sed 's/^CREATE TABLE /CREATE TABLE IF NOT EXISTS /' > <database>.sql
Se si desidera che l'SQL finale funzioni, è necessario rimuovere DROP TABLE SE EXIST. –
L'uscita discarica è la combinazione di DROP e CREATE, in modo da è necessario rimuovere l'istruzione DROP e modificare l'istruzione CREATE per formare un output valido (logico):
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
- 1. Oracle Crea tabella se non esiste
- 2. Crea se non esiste
- 3. Se la tabella esiste, la tabella di rilascio quindi la crea, se non esiste, basta crearla.
- 4. Codeigniter crea una directory se non esiste
- 5. Crea tabella in SQLite solo se non esiste già
- 6. mysqldump da una query
- 7. Crea directory se non esiste
- 8. Crea directory se non esiste
- 9. MySQL Crea errore tabella - La tabella non esiste
- 10. Come si elimina una tabella da un mysqldump
- 11. Crea un file solo se non esiste
- 12. Crea directory se non esiste con Ruby
- 13. mysql crea utente se non esiste
- 14. Crea cartelle intermedie se non ne esiste una
- 15. Java FileOutputStream Crea file se non esiste
- 16. crea se non esiste la vista?
- 17. Django crea profilo utente se non esiste
- 18. SqlAlchemy: crea l'oggetto se non esiste già?
- 19. Crea un file se non esiste
- 20. "Crea una tabella se non esiste" - come controllare anche lo schema?
- 21. Come testare se esiste già una tabella?
- 22. Inserire nella tabella h2 se non esiste
- 23. Aggiungi al file se esiste e crea se non
- 24. Come verificare se esiste una tabella Cassandra
- 25. Amazon Redshift: se esiste una tabella drop
- 26. Verificare se esiste una tabella di accesso
- 27. Creazione di una tabella SQLite solo se non esiste già
- 28. open() in Python non crea un file se non esiste
- 29. Come posso verificare se esiste una tabella nell'API C++ sqlite3?
- 30. Crea una tabella PDF
Speriamo che non ci siano dati nel db con quella stringa specifica al suo interno. :) – Riedsio
Le probabilità sono abbastanza improbabili. –
È possibile attenuare gli errori espandendo la corrispondenza, '$ sed 's/^ CREATE TABLE foo/CREATE TABLE SE NON ESISTE foo/g'' –