2015-08-24 90 views
0

我想從shell腳本插入一些值到mysql。 這裏是我的shell腳本:從shell腳本插入值到mysql

#!/bin/bash 

inputfile="a.txt" cat $inputfile | while read DVB_ID Tune_ID channel_name port IP SID PID status scramble; do 
    echo "INSERT INTO dvbTestTable (DVB_ID, Tune_ID, channel_name, port, IP, SID, PID, status, scramble) VALUES ('$DVB_ID', '$Tune_ID', '$channel_name', '$port', '$IP', '$SID', '$PID', '$status', '$scramble');" done | mysql -u root -p <password> dvbTestTable; 

這裏是a.txt

1 2 c1 3 4 5 6 c2 c3 

當我執行shell腳本似乎什麼也沒有發生在所有的(因爲dvbTestTable爲空),並給了我這樣的:

mysql Ver 14.14 Distrib 5.5.44, for debian-linux-gnu (x86_64) using readline 6.3 
Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. 

Oracle is a registered trademark of Oracle Corporation and/or its 
affiliates. Other names may be trademarks of their respective 
owners. 

Usage: mysql [OPTIONS] [database] 
    -?, --help   Display this help and exit. 
    -I, --help   Synonym for -? 
    --auto-rehash  Enable automatic rehashing. One doesn't need to use 
         'rehash' to get table and field completion, but startup 
         and reconnecting may take a longer time. Disable with 
         --disable-auto-rehash. 
         (Defaults to on; use --skip-auto-rehash to disable.) 
    -A, --no-auto-rehash 
         No automatic rehashing. One has to use 'rehash' to get 
         table and field completion. This gives a quicker start of 
         mysql and disables rehashing on reconnect. 
    --auto-vertical-output 
         Automatically switch to vertical output mode if the 
         result is wider than the terminal width. 
    -B, --batch   Don't use history file. Disable interactive behavior. 
         (Enables --silent.) 
    --character-sets-dir=name 
         Directory for character set files. 
    --column-type-info Display column type information. 
    -c, --comments  Preserve comments. Send comments to the server. The 
         default is --skip-comments (discard comments), enable 
         with --comments. 
    -C, --compress  Use compression in server/client protocol. 
    -#, --debug[=#]  This is a non-debug version. Catch this and exit. 
    --debug-check  Check memory and open file usage at exit. 
    -T, --debug-info Print some debug info at exit. 
    -D, --database=name Database to use. 
    --default-character-set=name 
         Set the default character set. 
    --delimiter=name Delimiter to be used. 
    --enable-cleartext-plugin 
         Enable/disable the clear text authentication plugin. 
    -e, --execute=name Execute command and quit. (Disables --force and history 
         file.) 
    -E, --vertical  Print the output of a query (rows) vertically. 
    -f, --force   Continue even if we get an SQL error. 
    -G, --named-commands 
         Enable named commands. Named commands mean this program's 
         internal commands; see mysql> help . When enabled, the 
         named commands can be used from any line of the query, 
         otherwise only from the first line, before an enter. 
         Disable with --disable-named-commands. This option is 
         disabled by default. 
    -i, --ignore-spaces Ignore space after function names. 
    --init-command=name SQL Command to execute when connecting to MySQL server. 
         Will automatically be re-executed when reconnecting. 
    --local-infile  Enable/disable LOAD DATA LOCAL INFILE. 
    -b, --no-beep  Turn off beep on error. 
    -h, --host=name  Connect to host. 
    -H, --html   Produce HTML output. 
    -X, --xml   Produce XML output. 
    --line-numbers  Write line numbers for errors. 
         (Defaults to on; use --skip-line-numbers to disable.) 
    -L, --skip-line-numbers 
         Don't write line number for errors. 
    -n, --unbuffered Flush buffer after each query. 
    --column-names  Write column names in results. 
         (Defaults to on; use --skip-column-names to disable.) 
    -N, --skip-column-names 
         Don't write column names in results. 
    --sigint-ignore  Ignore SIGINT (CTRL-C). 
    -o, --one-database Ignore statements except those that occur while the 
         default database is the one named at the command line. 
    --pager[=name]  Pager to use to display results. If you don't supply an 
         option, the default pager is taken from your ENV variable 
         PAGER. Valid pagers are less, more, cat [> filename], 
         etc. See interactive help (\h) also. This option does not 
         work in batch mode. Disable with --disable-pager. This 
         option is disabled by default. 
    -p, --password[=name] 
         Password to use when connecting to server. If password is 
         not given it's asked from the tty. 
    -P, --port=#  Port number to use for connection or 0 for default to, in 
         order of preference, my.cnf, $MYSQL_TCP_PORT, 
         /etc/services, built-in default (3306). 
    --prompt=name  Set the mysql prompt to this value. 
    --protocol=name  The protocol to use for connection (tcp, socket, pipe, 
         memory). 
    -q, --quick   Don't cache result, print it row by row. This may slow 
         down the server if the output is suspended. Doesn't use 
         history file. 
    -r, --raw   Write fields without conversion. Used with --batch. 
    --reconnect   Reconnect if the connection is lost. Disable with 
         --disable-reconnect. This option is enabled by default. 
         (Defaults to on; use --skip-reconnect to disable.) 
    -s, --silent  Be more silent. Print results with a tab as separator, 
         each row on new line. 
    -S, --socket=name The socket file to use for connection. 
    --ssl    Enable SSL for connection (automatically enabled with 
         other flags). 
    --ssl-ca=name  CA file in PEM format (check OpenSSL docs, implies 
         --ssl). 
    --ssl-capath=name CA directory (check OpenSSL docs, implies --ssl). 
    --ssl-cert=name  X509 cert in PEM format (implies --ssl). 
    --ssl-cipher=name SSL cipher to use (implies --ssl). 
    --ssl-key=name  X509 key in PEM format (implies --ssl). 
    --ssl-verify-server-cert 
         Verify server's "Common Name" in its cert against 
         hostname used when connecting. This option is disabled by 
         default. 
    -t, --table   Output in table format. 
    --tee=name   Append everything into outfile. See interactive help (\h) 
         also. Does not work in batch mode. Disable with 
         --disable-tee. This option is disabled by default. 
    -u, --user=name  User for login if not current user. 
    -U, --safe-updates Only allow UPDATE and DELETE that uses keys. 
    -U, --i-am-a-dummy Synonym for option --safe-updates, -U. 
    -v, --verbose  Write more. (-v -v -v gives the table output format). 
    -V, --version  Output version information and exit. 
    -w, --wait   Wait and retry if connection is down. 
    --connect-timeout=# Number of seconds before connection timeout. 
    --max-allowed-packet=# 
         The maximum packet length to send to or receive from 
         server. 
    --net-buffer-length=# 
         The buffer size for TCP/IP and socket communication. 
    --select-limit=# Automatic limit for SELECT when using --safe-updates. 
    --max-join-size=# Automatic limit for rows in a join when using 
         --safe-updates. 
    --secure-auth  Refuse client connecting to server if it uses old 
         (pre-4.1.1) protocol. 
    --server-arg=name Send embedded server this as a parameter. 
    --show-warnings  Show warnings after every statement. 
    --plugin-dir=name Directory for client-side plugins. 
    --default-auth=name Default authentication client-side plugin to use. 

Default options are read from the following files in the given order: 
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf 
The following groups are read: mysql client 
The following options may be given as the first argument: 
--print-defaults  Print the program argument list and exit. 
--no-defaults   Don't read default options from any option file. 
--defaults-file=#  Only read default options from the given file #. 
--defaults-extra-file=# Read this file after the global files are read. 

Variables (--variable-name=value) 
and boolean options {FALSE|TRUE} Value (after reading options) 
--------------------------------- ---------------------------------------- 
auto-rehash      TRUE 
auto-vertical-output    FALSE 
character-sets-dir    (No default value) 
column-type-info     FALSE 
comments       FALSE 
compress       FALSE 
debug-check      FALSE 
debug-info      FALSE 
database       (No default value) 
default-character-set    auto 
delimiter       ; 
enable-cleartext-plugin   FALSE 
vertical       FALSE 
force        FALSE 
named-commands     FALSE 
ignore-spaces      FALSE 
init-command      (No default value) 
local-infile      FALSE 
no-beep       FALSE 
host        (No default value) 
html        FALSE 
xml        FALSE 
line-numbers      TRUE 
unbuffered      FALSE 
column-names      TRUE 
sigint-ignore      FALSE 
port        3306 
prompt       mysql> 
quick        FALSE 
raw        FALSE 
reconnect       FALSE 
socket       /var/run/mysqld/mysqld.sock 
ssl        FALSE 
ssl-ca       (No default value) 
ssl-capath      (No default value) 
ssl-cert       (No default value) 
ssl-cipher      (No default value) 
ssl-key       (No default value) 
ssl-verify-server-cert   FALSE 
table        FALSE 
user        root 
safe-updates      FALSE 
i-am-a-dummy      FALSE 
connect-timeout     0 
max-allowed-packet    16777216 
net-buffer-length     16384 
select-limit      1000 
max-join-size      1000000 
secure-auth      FALSE 
show-warnings      FALSE 
plugin-dir      (No default value) 
default-auth      (No default value) 

我該怎麼做才能在mysql數據庫中插入這些值?

回答

0

這是因爲你的mysql命令是不正確的,你需要從它刪除表名:

echo "INSERT INTO dvbTestTable (...) VALUES (...);" done | mysql -u root -p <password>;