今天我必须这样做.我已经有小写的Windows数据库,并需要使用区分大小写的表名称导入到linux数据库,所以使用lowecase_table_names选项的播放不是一个选项:)
它看起来’show tables’显示了适当排序的表名,并且转储已使用`字符转义了表名.我用以下算法成功导入了数据库:
>我有mydb.sql与小写Windows转储
>我开始在Linux中创建数据库模式的应用程序,具有区分大小写的名称.
然后我在转储中有小写名称,在mysql数据库中有区分大小写的名称.我用sed&转换了转储. awk与以下脚本:
#!/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
转储已正确转换.在Linux中导入后一切正常.