Вставка данных в таблицу 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, и никакие данные в файле не вставляются. Любые идеи о том, как я могу изменить свой код для вставки данных

0
задан 2 September 2013 в 13:36

2 ответа

Используйте здесь документ .

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"
0
ответ дан 2 September 2013 в 13:36

Вы также можете использовать 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"
0
ответ дан 16 February 2020 в 13:13

Другие вопросы по тегам:

Похожие вопросы: