如何从期望脚本

时间:2015-07-05 23:05:02

标签: mysql linux tcl expect

为了将转储文件加载到MySQL数据库,我多次尝试了以下命令,但它无效:

spawn mysql -u dbUser -h hName -pdbPass dbName < db_schema.sql

我收到了这个回复:

  

mysql Ver 14.14 Distrib 5.5.43,对于debian-linux-gnu(x86_64)使用   readline 6.3版权所有(c)2000,2015,Oracle和/或其关联公司。   保留所有权利。

     

Oracle是Oracle Corporation和/或其注册商标   分支机构。其他名称可能是其各自所有者的商标。

     

用法:mysql [OPTIONS] [数据库] - ?, - help显示此信息   帮助和退出。 -I, - help同义词 - ? --auto-翻版
  启用自动重新散列。一个人不需要使用                         &#39;翻版&#39;获得表和字段完成,但启动                         并重新连接可能需要更长的时间。禁用                          - 禁用自动翻版。                         (默认为on;使用--skip-auto-rehash禁用。) - A, - no-auto-rehash                         没有自动重复。一个人必须使用&#39; rehash&#39;要得到                         表和现场完成。这样可以更快地启动                         mysql并禁用重新连接时的重新连接。 --auto垂直输出                         如果是,则自动切换到垂直输出模式                         结果比端子宽度宽。 -B, - 不要使用历史文件。禁用交互行为。                         (启用--silent。) - character-sets-dir = name                         字符集文件的目录。 --column-type-in​​fo显示列类型信息。 -c, - comment保留评论。将评论发送到服务器。该                         默认是--skip-comments(丢弃注释),启用                         与 - 评论。 -C, - 压缩在服务器/客户端协议中使用压缩。 - #, - debug [=#]这是一个   非调试版本。抓住这个并退出。 --debug-check检查   内存和退出时打开文件的使用情况。 -T, - debug-info打印一些   退出时调试信息。 -D, - database = name要使用的数据库。
  --default-字符集名=                         设置默认字符集。 --delimiter = name要使用的分隔符。 --enable-明文-插件                         启用/禁用明文身份验证插件。 -e, - execute = name执行命令并退出。 (禁用    - 力量和历史                         file。) - E,--vertical垂直打印查询(行)的输出。 -f, - force即使我们继续   得到一个SQL错误。 -G,--named-commands                         启用命名命令。命名命令意味着这个程序                         内部命令;见mysql&gt;救命 。启用时,                         命令命令可以在查询的任何行中使用,                         否则只能从第一行开始。                         使用--disable-named-commands禁用。这个选项是                         默认情况下禁用。 -i, - ignore-spaces在函数名称后忽略空格。 --init-command = name SQL命令   连接到MySQL服务器时执行。                         重新连接时会自动重新执行。 --local-infile启用/禁用LOAD DATA LOCAL   INFILE。 -b, - no-beep错误时关闭蜂鸣声。 -H,   --host = name连接到主机。 -H, - html生成HTML输出。 -X, - xml生成XML输出。 --line号码
  写错误的行号。                         (默认为on;使用--skip-line-numbers禁用。) - L, - skip-line-numbers                         不要写错误的行号。每次查询后-n, - unbuffered Flush buffer。 --column-names在结果中写入列名。                         (默认为on;使用--skip-column-names禁用。) - N, - skip-column-names                         不要在结果中写下列名。 --sigint-ignore忽略SIGINT(CTRL-C)。 -o, - one-database忽略语句,除了在语句中出现的语句                         默认数据库是在命令行中命名的数据库。 --pager [= name]用于显示结果的寻呼机。如果你   不提供                         选项,默认寻呼机取自ENV变量                         寻呼机。有效的寻呼机更少,更多,猫[&gt;文件名],                         等。请参阅交互式帮助(\ h)。此选项不会                         以批处理模式工作。使用--disable-pager禁用。这个                         默认情况下禁用选项。 -p, - password [= name]                         连接到服务器时使用的密码。如果密码是                         从tty那里得不到它。 -P, - port =#用于连接的端口号或0表示默认值,in                         优先顺序,my.cnf,$ MYSQL_TCP_PORT,                         / etc / services,内置默认值(3306)。 --prompt = name将mysql提示符设置为此值。 --protocol = name用于连接的协议(tcp,socket,pipe,                         记忆)。 -q, - 快速不要缓存结果,逐行打印。这可能会变慢                         如果输出被暂停,则关闭服务器。不使用                         历史档案。 -r, - raw写入字段而不进行转换。与--batch一起使用。 --reconnect重新连接   如果连接丢失。禁用                         --disable重新连接。默认情况下启用此选项。                         (默认为on;使用--skip-reconnect禁用。) - s, - silent更安静。用a打印结果   标签作为分隔符,                         新行上的每一行。 -S, - socket = name用于连接的套接字文件。 --ssl启用SSL   用于连接(自动启用                         其他旗帜)。 --ssl-ca =以PEM格式命名CA文件(检查OpenSSL docs,暗示                         --ssl)。 --ssl-capath = name CA目录(检查OpenSSL文档,隐含--ssl)。 --ssl-cert =名称X509证书   采用PEM格式(暗示--ssl)。 --ssl-cipher = name要使用的SSL密码   (暗示--ssl)。 --ssl-key =以PEM格式命名X509键(暗示   --ssl)。 --ssl-验证服务器证书                         验证服务器&#34;通用名称&#34;在其证书中                         连接时使用的主机名。此选项被禁用                         默认。 -t, - table以表格格式输出。 --tee = name将所有内容追加到outfile中。看到   互动帮助(\ h)                         也。在批处理模式下不起作用。禁用                         --disable开球。默认情况下禁用此选项。 -u, - user = name如果不是当前用户,则登录用户   -U, - safe-updates仅允许使用密钥的UPDATE和DELETE。 -U, - i-am-a-dummy选项的同义词--safe-updates,-U。 -v, - verbose了解更多。 (-v -v -v给出表输出格式)。 -V, - version   输出版本信息并退出。 -w, - 等待等待   如果连接断开,则重试。 --connect-timeout =#秒数   在连接超时之前。 --max允许的分组=#                         要发送或接收的最大数据包长度                         服务器。 --net缓冲 - 长度=#                         TCP / IP和套接字通信的缓冲区大小。 --select-limit = #SEIS时的自动限制   使用--safe-updates。 --max-join-size =#行的自动限制   在使用时的连接中                         --safe更新。 --secure-auth拒绝客户端连接到服务器(如果它使用旧服务器)                         (4.1.1之前的)协议。 --server-arg = name将嵌入式服务器作为参数发送。 --show-warnings显示   每个声明后的警告。 --plugin-dir = name目录   客户端插件。 --default-auth = name默认身份验证   要使用的客户端插件。

     

以给定顺序从以下文件中读取默认选项:   /etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf~ / .my.cnf以下   读取组:mysql客户端可以给出以下选项   第一个论点:   --print-defaults打印程序参数列表并退出。   --no-defaults不要从任何选项文件中读取默认选项。   --defaults-file =#仅从给定文件#中读取默认选项。   --defaults-extra-file =#读取全局文件后读取此文件。

     

变量(--variable-name = value)和布尔选项{FALSE | TRUE}   价值(阅读选项后)   --------------------------------- ----------------- ----------------------- auto-rehash TRUE auto-vertical-output FALSE character-sets-dir
  (无默认值)column-type-in​​fo FALSE comments
  FALSE压缩FALSE调试检查
  FALSE debug-info FALSE数据库
  (无默认值)默认字符集自动分隔符
  ; enable-cleartext-plugin FALSE vertical
  FALSE强制FALSE命名命令
  FALSE ignore-spaces FALSE init-command
  (无默认值)local-infile FALSE no-beep
  FALSE主机localhost html
  FALSE xml FALSE行号
  TRUE无缓冲的FALSE列名   TRUE sigint - 忽略FALSE端口
  3306提示mysql&gt;快速
  FALSE raw FALSE重新连接
  TRUE套接字/var/run/mysqld/mysqld.sock ssl   FALSE ssl-ca(无默认值)ssl-capath   (无默认值)ssl-cert(无默认值   value)ssl-cipher(无默认值)ssl-key
  (无默认值)ssl-verify-server-cert FALSE表
  FALSE用户root安全更新
  假,我是一个假的假连接超时
  0 max-allowed-packet 16777216 net-buffer-length
  16384 select-limit 1000 max-join-size
  1000000 secure-auth FALSE show-warnings
  FALSE plugin-dir(无默认值)   default-auth(无默认值)

你们可以帮忙吗?我认为不是符号&#34;&lt;&#34;期望脚本没有任何意义!!

2 个答案:

答案 0 :(得分:1)

1)你能确定短划线后没有空格,例如-pPASSWORD

2)你能创建一个在一些虚拟表中插入1行的普通fred.sql

3)您是否可以验证是否在必要时测试了fred.sql的路径

Fred排除了你真正的sql文件的问题(我知道矫枉过正)

答案 1 :(得分:0)

如果您尝试将转储文件加载到MySQL数据库,那么您也可以使用SQL导入导出向导。