我想将具有特定列的表导出为CSV文件。 (我的数据库名称是:myDatabaseXYZ,用户名是:myUsername1,密码是:mypassword1234,数据库是localhost,表名是GDPR_Violation_Actions)
但是以下不起作用:
输入:
$ mysql -B -u myUsername1 -p mypassword1234 myDatabaseXYZ
-h localhost
-e "SELECT id,GDPR_PROOF,email,telephone FROM GDPR_Violation_Actions;" \
| sed "s/'/\'/;s/\t/\",\"/g;s/^/\"/;s/$/\"/;s/\n//g"
输出:
"mysql Ver 14.14 Distrib 5.1.73, for redhat-linux-gnu (x86_64) using readline 5.1"
"Copyright (c) 2000, 2013, 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."
" -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."
" -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."
" -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."
" -g, --no-named-commands "
" Named commands are disabled. Use \* form only, or use"
" named commands only in the beginning of a line ending"
" with a semicolon (;). Since version 10.9, the client now"
" starts with this option ENABLED by default. Disable with"
" '-G'. Long format commands still work from the first"
" line. WARNING: option deprecated; use"
" --disable-named-commands instead."
" -i, --ignore-spaces Ignore space after function names."
" --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."
" -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."
" -N, --skip-column-names "
" Don't write column names in results."
" -O, --set-variable=name "
" Change the value of a variable. Please note that this"
" option is deprecated; you can set variables directly with"
" --variable-name=value."
" --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."
" --no-pager Disable pager and print to stdout. See interactive help"
" (\h) also. WARNING: option deprecated; use"
" --disable-pager instead."
" -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."
" -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).Disable with --skip-ssl."
" --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."
" --no-tee Disable outfile. See interactive help (\h) also. WARNING:"
" Option deprecated; use --disable-tee instead."
" -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."
""
"Default options are read from the following files in the given order:"
"/etc/mysql/my.cnf /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"
"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 latin1"
"delimiter ;"
"vertical FALSE"
"force FALSE"
"named-commands FALSE"
"ignore-spaces FALSE"
"local-infile FALSE"
"no-beep FALSE"
"host localhost"
"html FALSE"
"xml FALSE"
"line-numbers TRUE"
"unbuffered FALSE"
"column-names TRUE"
"sigint-ignore FALSE"
"port 0"
"prompt mysql> "
"quick FALSE"
"raw FALSE"
"reconnect FALSE"
"socket (No default value)"
"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 web145-mydb"
"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"
编辑:(带有crontab的示例,导出的CSV文件,使用SFTP上传)
#!/bin/bash
today=`date '+%Y%m%d%H%M%S'`;
### table1
table1File="/var/tmp/table1.$today.csv";
mysql -B -u u1 -p1234 dbmy -h localhost -e "SELECT id,company as LOGO FROM table1;" | sed "s/'/\'/;s/\t/\",\"/g;s/^/\"/;s/$/\"/;s/\n//g" > $table1File
### table2
table2File="/var/tmp/table2.$today.csv";
mysql -B -u u1 -p1234 dbmy -h localhost -e "SELECT id FROM table2;" | sed "s/'/\'/;s/\t/\",\"/g;s/^/\"/;s/$/\"/;s/\n//g" > $table2File
### SFTP
sftp -i /root/gdpr/private-key.pem mysftp@10.0.0.2:/folder/ << EOF
put /var/tmp/table1.$today.csv
put /var/tmp/table2.$today.csv
quit
EOF
答案 0 :(得分:2)
假设你确实完全复制了这些命令,那么你输出的问题可能是你在行继续符space
之后的另外两个"\"
字符(应该是最后的事情就行了。)
删除那些spaces
,它应该有效。
修改强>
$ mysql -B -u myUsername1 -pmypassword1234 myDatabaseXYZ
-h localhost
-e "SELECT id FROM GDPR_Violation_Actions;" | sed "s/'/\'/;s/\t/\",\"/g;s/^/\"/;s/$/\"/;s/\n//g"