使用脚本将数据插入mysql表

使用脚本将数据插入mysql表

我正在尝试使用以下脚本将数据加载到 mysql 数据库中

    #!/bin/bash

    DB_USER='my_user';
    DB_PASSWD='passwd';

    DB_NAME='db_name';
    TABLE='rass';

    INPUT_FILE='/full/path/to/re.txt';

    SQL="USE $DB_NAME; LOAD LOCAL DATA INFILE '$INPUT_FILE' REPLACE INTO TABLE `$TABLE` LINES TERMINATED BY '|' CHARACTER SET utf8;"
    mysql --user=$DB_USER --password=$DB_PASSWD --default_character_set utf8 $DB_NAME

当我运行该命令时,它显示 mysql 手册,但文件中的任何数据均未插入。关于如何修改代码以插入数据,您有什么想法吗?

答案1

用一个这里的文件

mysql [args] << EOF
USE $DB_NAME; 
LOAD LOCAL DATA INFILE "$INPUT_FILE" REPLACE INTO TABLE "$TABLE" LINES TERMINATED BY '|' CHARACTER SET utf8;
QUIT;
EOF

(我想你实际上不希望在变量引用周围使用单引号)。

另外,你可以设置一个~/.my.cnf 文件使得非交互式管理更简单一些,例如:

[client]
user=root
password="some pass"

答案2

您还可以使用mysql -e和获取 Bash 变量并放入 MySQL 查询;

#!/bin/bash
baseName="base1"
tableName="table1"
animal="dog"
par1="1"
par2="2"

myslqquery="USE $baseName;
            INSERT INTO $tableName VALUES(NULL,\"$animal\",$par1,$par2);
            SELECT * from $tableName;"

mysql -uroot -e "$myslqquery"

相关内容