在装有 LAMP 的 CentOS 服务器上,我有一个包含 10-20 个 SQL 转储文件的文件夹。有没有办法(单行查询)可以导入所有这些文件?
我尝试了以下操作:
登录 putty,导航到包含所有 SQL 转储的文件(文件夹
mysqlallfile
)mysqlallfile
包含:1.sql.gz
,2.sql.gz
等等我创建了 sh 文件说
bulkimport.sh
#!/bin/sh for filename in *.gz; do tempfile="${filename##*/}" database_name="${tempfile%%.*}" echo $database_name mysql -pPASS -u USER -e "CREATE DATABASE $database_name" gzcat $filename | mysql -pPASS -uUSER $database_name done
我在终端中运行了以下命令:
bash bulkimport.sh
它返回错误:
bulkimport.sh: line 2: syntax error near unexpected token `$'\r'' 'ulkimport.sh: line 2: `for filename in *.gz;
答案1
脚本文件中可能存在 Windows 行尾(或其他编码错误)。请在 Windows 的编辑器中保存带有 Unix 行尾的文件,然后再次将脚本复制到服务器,或者使用 Linux 中的众多选项之一进行转换(例如dos2unix
,,recode
)vim
。