wildcards en mysqldump

Pagina: 1
Acties:

  • Der Rudi
  • Registratie: Mei 2002
  • Laatst online: 19:17
Ik gebruik mysqldump om backups te maken, gaat prima op database nivo. Nu heb ik in dezelfde database verschillende tabelen staan met prefixen bv 'test1_', 'test2_', etc. Nu wil ik alleen een backup maken van alle tabellen met prefix 'test2_'.

Theoretisch vlgs mysqldump manual zou 'test2?' het moeten doen (met '?' als wildcard voor alle ander tekens), maar mysqldump geeft aan dat die tabel niet bestaat!? Iemand enig idee wat ik fout doe, of is dit niet mogelijk op tabel nivo met mysqldump? Het lukt overigens wel om slechts 1 tabel te backuppen als die volledig wordt uitgeschreven dus bv 'testtabel'.

Ben er nu een dag mee aan de gang en geen voortgang. Help is dan ook erg welkom... :)

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Is de "?" wildcard niet een single-character match? Moet je niet de "%" (of "*") wildcard hebben?
(Ik ken mysqldump niet zo heel erg goed, maar het lijkt me zoiets...)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Der Rudi
  • Registratie: Mei 2002
  • Laatst online: 19:17
Wat ik begreep uit de mysqldump manual is dat de '?' overeenkomt met de '*' zoals bekend uit windows/dos, en wie ben ik om het beter te weten dan de manual? :)

btw een single character match zou de '_' zijn vlgs manual, en een literal zou te escapen zijn met de '\'.

[ Voor 25% gewijzigd door Der Rudi op 30-08-2006 12:33 ]


  • Gonadan
  • Registratie: Februari 2004
  • Laatst online: 22:27

Gonadan

Admin Beeld & Geluid, Harde Waren
Volgens google ziet hij de % ook wel als wildcard, heb je het al geprobeerd?
Dan google ik nog even verder ;)

Edit:
Google vertelt me dat mysqlshow de wildcards * en ? converteert naar respectievelijk % en _.
Als dit voor mysqldump hetzelfde is dan heb jij een single character wildcard gebruikt :)

[ Voor 47% gewijzigd door Gonadan op 30-08-2006 12:39 ]

Look for the signal in your life, not the noise.

Canon R6 | RF 24-70 f/2.8 L | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


  • Reinier
  • Registratie: Februari 2000
  • Nu online

Reinier

\o/

Misschien komt het omdat je een wildcard karakter (de underscore) in je tabelnamen gebruikt? Hier gaat iets vergelijkbaars fout om die reden.

  • Der Rudi
  • Registratie: Mei 2002
  • Laatst online: 19:17
Dank voor de reakties tot dusver.

Dit is het commando dat gegeven wordt (via php script):

'/usr/local/bin/mysqldump' --user=######## --password=######## --opt -v --compatible=mysql40 --default-character-set=latin1 www-dbname test%>>backups/backup-2006-08-30_13-14-37.sql 2>../modules/MysqlDump/dump-verbose.txt

De foutmelding is: mysqldump: Couldn't find table: "test%"

Zowel '%' als '_' geven dezelfde error. Als ik de bestaande tabel 'test' gebruik gaat alles goed.

De '_' in de tabelnaam kan dmv een escape als literal gezien worden. Eea wordt dan 'tabel\_%', vlgs manual. Overigens heb ik voor deze testopstelling GEEN _ in de tabelnamen, zijn test, test1 en test2.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
En heb je "*" al geprobeerd?

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Der Rudi
  • Registratie: Mei 2002
  • Laatst online: 19:17
'*' geeft zelfde foutmelding (had ik inderdaad nog niet geprobeerd :) )

  • Gonadan
  • Registratie: Februari 2004
  • Laatst online: 22:27

Gonadan

Admin Beeld & Geluid, Harde Waren
Zomaar een gek idee: quotes om de naam, helpt dat? :?

Look for the signal in your life, not the noise.

Canon R6 | RF 24-70 f/2.8 L | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


  • Reinier
  • Registratie: Februari 2000
  • Nu online

Reinier

\o/

Wat gebeurt er als je test% binnen quotes zet? Het lijkt erop dat de % nu als literal gezien wordt.

^^^ Wat Gonadan zegt dus :P

[ Voor 13% gewijzigd door Reinier op 30-08-2006 13:41 ]


  • Der Rudi
  • Registratie: Mei 2002
  • Laatst online: 19:17
Helaas, nog single nog double quotes maken verschil: error blijft dezelfde.

  • Reinier
  • Registratie: Februari 2000
  • Nu online

Reinier

\o/

Waar staat www-dbname trouwens voor? Lijkt me sterk dat je database zo heet :?

  • Der Rudi
  • Registratie: Mei 2002
  • Laatst online: 19:17
yep, dat is de name van de database :)

Eea doet het gewoon als ik als tabel naam 'test' gebruik, zonder wildcards. Maar het was nou net de bedoeling om wildcards te gebruiken....

  • Gonadan
  • Registratie: Februari 2004
  • Laatst online: 22:27

Gonadan

Admin Beeld & Geluid, Harde Waren
Je kan natuurlijk een workaround maken door met php de tabellen op te roepen dmv wildcards en aan de hand van dat resultaat de dumpquery in elkaar zetten. :)

Look for the signal in your life, not the noise.

Canon R6 | RF 24-70 f/2.8 L | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


  • Reinier
  • Registratie: Februari 2000
  • Nu online

Reinier

\o/

Gonadan schreef op woensdag 30 augustus 2006 @ 12:37:
Google vertelt me dat mysqlshow de wildcards * en ? converteert naar respectievelijk % en _.
Als dit voor mysqldump hetzelfde is dan heb jij een single character wildcard gebruikt :)
Ik zie dus nergens dat mysqldump überhaupt wildcard kent. Alleen mysqlshow dus. Dus jouw aanname is misschien niet juist :)

  • Der Rudi
  • Registratie: Mei 2002
  • Laatst online: 19:17
Mmm, Reinier zou het wel eens gevonden kunnen hebben...

Oplossing zou dan zijn om mbv php een string te maken van alle tabellen in de database die beginnen met 'test' en deze string mee te geven aan mysqldump.

Zal eens een berichtje plaatsen in mysql forum, kijken of er daar uitsluitsel kan komen of mysqldump wel of niet wildcards ondersteunt.

  • Der Rudi
  • Registratie: Mei 2002
  • Laatst online: 19:17
Ok, mysqldump ondersteunt dus geen wildcards vlgs mysql forum. Heb eea dan ook anders opgelost: via php string gemaakt van de gewenste tables en die meegegeven aan mysqldump.

Mocht iemand zich geroepen voelen om dit in de mysqldump source aan te passen, be my guest ;)
Pagina: 1