如何使用单个命令导入文件夹内的所有 sql 文件?

如何使用单个命令导入文件夹内的所有 sql 文件?

在装有 LAMP 的 CentOS 服务器上,我有一个包含 10-20 个 SQL 转储文件的文件夹。有没有办法(单行查询)可以导入所有这些文件?

我尝试了以下操作:

  1. 登录 putty,导航到包含所有 SQL 转储的文件(文件夹mysqlallfile

    mysqlallfile包含:1.sql.gz2.sql.gz等等

  2. 我创建了 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
    
  3. 我在终端中运行了以下命令:

    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,,recodevim

相关内容