Dziś musiałem to zrobić. Mam już system Windows db małymi literami i muszę zaimportować do Linux db z nazwami dużych i małych liter, więc opcja z opcją lowecase_table_names nie jest opcją :)
Wygląda na to, że "tabele pokazują" odpowiednio posortowane nazwy tabel i zrzutu uciekły nazwy tabel z `charakterem. Mam pomyślnie zaimportowany do bazy danych z następującym algorytmem:
- mam mydb.sql z małymi oknami zrzucić
- Zacząłem aplikacji na tworzenie schematu bazy danych w systemie Linux, z nazwami wrażliwych przypadków.
Następnie miałem małe litery w zrzutach i nazwy z rozróżnianiem wielkich i małych liter w bazie danych mysql. I konwertowane zrzutu za pomocą sed & awk z poniższego skryptu:
#!/bin/bash
MYSQL="mysql -u root -p mydb"
FILE=mydb.sql
TMP1=`mktemp`
TMP2=`mktemp`
cp $FILE $TMP1
for TABLE in `echo "show tables" | $MYSQL`; do
LCTABLE=`echo $TABLE| awk '{print tolower($0)}'`
echo "$LCTABLE --> $TABLE"
cat $TMP1 | sed "s/\`$LCTABLE\`/\`$TABLE\`/" > $TMP2
cp $TMP2 $TMP1
done
cp $TMP1 $FILE.conv
rm $TMP1
rm $TMP2
A wysypisko zostało poprawnie konwertowane. Wszystko działa po zaimportowaniu w systemie Linux.
Wszystkie te opcje wymagają, aby użytkownik cofnął się w czasie i skonfigurował opcję bazy danych lower_case_table_names przed utworzeniem danych. –