⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 manual_tools.html

📁 详细介绍了MYSQL的主要功能几一些代码
💻 HTML
📖 第 1 页 / 共 3 页
字号:

<p>实用程序,为备份或为把数据转移到另外的SQL服务器上倾倒一个数据库或许多数据库。倾倒将包含 
创建表或充实表的SQL语句。 </p>

<pre>shell&gt; mysqldump [OPTIONS] database [tables]
</pre>

<p>如果你不给定任何表,整个数据库将被倾倒。 </p>

<p>通过执行<code>mysqldump --help</code>,你能得到你<code>mysqldump</code>的版本支持的选项表。 
</p>

<p>注意,如果你运行<code>mysqldump</code>没有<code>--quick</code>或<code>--opt</code>选项,<code>mysqldump</code>将在倾倒结果前装载整个结果集到内存中,如果你正在倾倒一个大的数据库,这将可能是一个问题。 
</p>

<p><code>mysqldump</code>支持下列选项: 

<dl COMPACT="mysqldump">
  <dt><code>--add-locks</code> </dt>
  <dd>在每个表倾倒之前增加<code>LOCK TABLES</code>并且之后<code>UNLOCK TABLE</code>。(为了使得更快地插入到<strong>MySQL</strong>)。 
  </dd>
  <dt><code>--add-drop-table</code> </dt>
  <dd>在每个<code>create</code>语句之前增加一个<code>drop table</code>。 </dd>
  <dt><code>--allow-keywords</code> </dt>
  <dd>允许创建是关键词的列名字。这由表名前缀于每个列名做到。 </dd>
  <dt><code>-c, --complete-insert</code> </dt>
  <dd>使用完整的<code>insert</code>语句(用列名字)。 </dd>
  <dt><code>-C, --compress</code> </dt>
  <dd>如果客户和服务器均支持压缩,压缩两者间所有的信息。 </dd>
  <dt><code>--delayed</code> </dt>
  <dd>用<code>INSERT DELAYED</code>命令插入行。 </dd>
  <dt><code>-e, --extended-insert</code> </dt>
  <dd>使用全新多行<code>INSERT</code>语法。(给出更紧缩并且更快的插入语句)</dd>
  <dt><code>-#, --debug[=option_string]</code> </dt>
  <dd>跟踪程序的使用(为了调试)。 </dd>
  <dt><code>--help</code> </dt>
  <dd>显示一条帮助消息并且退出。 </dd>
  <dt><code>--fields-terminated-by=...</code> </dt>
  <dd> </dd>
  <dt><code>--fields-enclosed-by=...</code> </dt>
  <dd> </dd>
  <dt><code>--fields-optionally-enclosed-by=...</code> </dt>
  <dd> </dd>
  <dt><code>--fields-escaped-by=...</code> </dt>
  <dd> </dd>
  <dt><code>--fields-terminated-by=...</code> </dt>
  <dd>这些选择与<code>-T</code>选择一起使用,并且有相应的<code>LOAD DATA 
    INFILE</code>子句相同的含义。见<a HREF="manual_Reference.html#LOAD_DATA">7.16<code> 
    LOAD DATA INFILE</code>语法</a>。 </dd>
  <dt><code>-F, --flush-logs</code> </dt>
  <dd>在开始倾倒前,洗掉在<strong>MySQL</strong>服务器中的日志文件。 </dd>
  <dt><code>-f, --force,</code> </dt>
  <dd>即使我们在一个表倾倒期间得到一个SQL错误,继续。 </dd>
  <dt><code>-h, --host=..</code> </dt>
  <dd>从命名的主机上的<strong>MySQL</strong>服务器倾倒数据。缺省主机是<code>localhost</code>。 
  </dd>
  <dt><code>-l, --lock-tables.</code> </dt>
  <dd>为开始倾倒锁定所有表。 </dd>
  <dt><code>-t, --no-create-info</code> </dt>
  <dd>不写入表创建信息(<code>CREATE TABLE</code>语句)</dd>
  <dt><code>-d, --no-data</code> </dt>
  <dd>不写入表的任何行信息。如果你只想得到一个表的结构的倾倒,这是很有用的! 
  </dd>
  <dt><code>--opt</code> </dt>
  <dd>同<code>--quick --add-drop-table --add-locks --extended-insert --lock-tables</code>。应该给你为读入一个<strong>MySQL</strong>服务器的尽可能最快的倾倒。 
  </dd>
  <dt><code>-pyour_pass, --password[=your_pass]</code> </dt>
  <dd>与服务器连接时使用的口令。如果你不指定<samp>“=your_pass”</samp>部分,<code>mysqldump</code>需要来自终端的口令。 
  </dd>
  <dt><code>-P port_num, --port=port_num</code> </dt>
  <dd>与一台主机连接时使用的TCP/IP端口号。(这用于连接到<code>localhost</code>以外的主机,因为它使用 
    Unix套接字。)</dd>
  <dt><code>-q, --quick</code> </dt>
  <dd>不缓冲查询,直接倾倒至stdout;使用<code>mysql_use_result()</code>做它。 
  </dd>
  <dt><code>-S /path/to/socket, --socket=/path/to/socket</code> </dt>
  <dd>与<code>localhost</code>连接时(它是缺省主机)使用的套接字文件。 </dd>
  <dt><code>-T, --tab=path-to-some-directory</code> </dt>
  <dd>对于每个给定的表,创建一个<code>table_name.sql</code>文件,它包含SQL 
    CREATE 命令,和一个<code>table_name.txt</code>文件,它包含数据。 <strong>注意</strong>:这只有在<code>mysqldump</code>运行在<code>mysqld</code>守护进程运行的同一台机器上的时候才工作。<code>.txt</code>文件的格式根据<code>--fields-xxx</code>和<code>--lines--xxx</code>选项来定。 
  </dd>
  <dt><code>-u user_name, --user=user_name</code> </dt>
  <dd>与服务器连接时,<strong>MySQL</strong>使用的用户名。缺省值是你的Unix登录名。 
  </dd>
  <dt><code>-O var=option, --set-variable var=option</code> </dt>
  <dd>设置一个变量的值。可能的变量被列在下面。 </dd>
  <dt><code>-v, --verbose</code> </dt>
  <dd>冗长模式。打印出程序所做的更多的信息。 </dd>
  <dt><code>-V, --version</code> </dt>
  <dd>打印版本信息并且退出。 </dd>
  <dt><code>-w, --where='where-condition'</code> </dt>
  <dd>只倾倒被选择了的记录;注意引号是强制的! <pre>&quot;--where=user='jimf'&quot; &quot;-wuserid&gt;1&quot; &quot;-wuserid&lt;1&quot;
</pre>
  </dd>
</dl>

<p>最常见的<code>mysqldump</code>使用可能制作整个数据库的一个备份: </p>

<pre>mysqldump --opt database &gt; backup-file.sql 
</pre>

<p>但是它对用来自于一个数据库的信息充实另外一个<strong>MySQL</strong>数据库也是有用的: 
</p>

<pre>mysqldump --opt database | mysql --host=remote-host -C database
</pre>

<h2><a NAME="mysqlimport" HREF="manual_toc.html#mysqlimport">12.4 
从文本文件导入数据</a></h2>

<p><code>mysqlimport</code>提供一个到<code>LOAD DATA INFILE</code>SQL语句的命令行接口。<code>mysqlimport</code>的大多数选项直接对应于<code>LOAD 
DATA INFILE</code>的相同选项。见<a HREF="manual_Reference.html#LOAD_DATA">7.16<code> 
LOAD DATA INFILE</code>语法</a>。 </p>

<p><code>mysqlimport</code>象这样调用: </p>

<pre>shell&gt; mysqlimport [options] filename ...
</pre>

<p>对于在命令行上命名的每个文本文件,<code>mysqlimport</code>剥去文件名的扩展名并且使用它决定哪个表导入文件的内容。例如,名为<tt>“patient.txt”</tt>、<tt>“patient.text”</tt>和<tt>“patient”</tt>将全部被导入名为<code>patient</code>的一个表中。 
</p>

<p><code>mysqlimport</code>支持下列选项: 

<dl COMPACT="manual_Reference.html#LOAD_DATA">
  <dt><code>-C, --compress</code> </dt>
  <dd>如果客户和服务器均支持压缩,压缩两者之间的所有信息。 </dd>
  <dt><code>-#, --debug[=option_string]</code> </dt>
  <dd>跟踪程序的使用(为调试)。 </dd>
  <dt><code>-d, --delete</code> </dt>
  <dd>在导入文本文件前倒空表格。 </dd>
  <dt><code>--fields-terminated-by=...</code> </dt>
  <dd> </dd>
  <dt><code>--fields-enclosed-by=...</code> </dt>
  <dd> </dd>
  <dt><code>--fields-optionally-enclosed-by=...</code> </dt>
  <dd> </dd>
  <dt><code>--fields-escaped-by=...</code> </dt>
  <dd> </dd>
  <dt><code>--fields-terminated-by=...</code> </dt>
  <dd>这些选项与对应于<code>LOAD DATA INFILE</code>的子句相同的含义。见<a HREF="manual_Reference.html#LOAD_DATA">7.16<code> LOAD DATA INFILE</code>语法</a>。 </dd>
  <dt><code>-f, --force</code> </dt>
  <dd>忽略错误。例如,如果对于一个文本文件的一个表不存在,继续处理任何余下的文件。没有<code>--force</code>,如果表不存在,<code>mysqlimport</code>退出。 
  </dd>
  <dt><code>--help</code> </dt>
  <dd>显示一条帮助消息并且退出。 </dd>
  <dt><code>-h host_name, --host=host_name</code> </dt>
  <dd>导入数据到命名的主机上的<strong>MySQL</strong>服务器。缺省主机是<code>localhost</code>。 
  </dd>
  <dt><code>-i, --ignore</code> </dt>
  <dd>见为<code>--replace</code>选项的描述。 </dd>
  <dt><code>-l, --lock-tables</code> </dt>
  <dd>在处理任何文本文件前为写入所定<strong>所有的</strong>表。这保证所有的表在服务器上被同步。 
  </dd>
  <dt><code>-L, --local</code> </dt>
  <dd>从客户读取输入文件。缺省地,如果你连接<code>localhost</code>(它是缺省主机),文本文件被假定在服务器上。 
  </dd>
  <dt><code>-pyour_pass, --password[=your_pass]</code> </dt>
  <dd>与服务器连接时使用的口令。如果你不指定<samp>“=your_pass”</samp>部分,<code>mysqlimport</code>要求来自终端的口令。 
  </dd>
  <dt><code>-P port_num, --port=port_num</code> </dt>
  <dd>与一台主机连接时使用的TCP/IP端口号。(这被用于连接到除<code>localhost</code>以外的主机,因为它使用Unix套接字。)</dd>
  <dt><code>-r, --replace</code> </dt>
  <dd><code>--replace</code>和<code>--ignore</code>选项控制对输入在唯一键值上有重复的现有记录的输入处理。如果你指定<code>--replace</code>,新行将代替有相同唯一键的存在的行。如果你指定<code>--ignore</code>,跳过输入在唯一键值上有重复的现有记录。如果你不指定任何一个选项,当找到一个重复的键值,出现一个错误,并且文本文件余下部分被忽略。 
  </dd>
  <dt><code>-s, --silent</code> </dt>
  <dd>安静模式。只有在错误发生时,写出输出。 </dd>
  <dt><code>-S /path/to/socket, --socket=/path/to/socket</code> </dt>
  <dd>与<code>localhost</code>(它是缺省主机)连接时使用的套接字文件。 </dd>
  <dt><code>-u user_name, --user=user_name</code> </dt>
  <dd><strong>MySQL</strong>使用的用户名字当与服务者联接时。缺省价值是你的 
    Unix 登录名字。 </dd>
  <dt><code>-v, --verbose</code> </dt>
  <dd>冗长模式。打印程序所做的更多信息。 </dd>
  <dt><code>-V, --version</code> </dt>
  <dd>打印版本信息并且退出。 </dd>
</dl>

<p>以下是使用<code>mysqlimport</code>运行的一个样本: </p>

<pre>$ mysql --version
mysql  Ver 9.33 Distrib 3.22.25, for pc-linux-gnu (i686)
$ uname -a
Linux xxx.com 2.2.5-15 #1 Mon Apr 19 22:21:09 EDT 1999 i586 unknown
$ mysql -e 'CREATE TABLE imptest(id INT, n VARCHAR(30))' test
$ ed
a
100     Max Sydow
101     Count Dracula
.
w imptest.txt
32
q
$ od -c imptest.txt
0000000   1   0   0  \t   M   a   x       S   y   d   o   w  \n   1   0
0000020   1  \t   C   o   u   n   t       D   r   a   c   u   l   a  \n
0000040
$ mysqlimport --local test imptest.txt
test.imptest: Records: 2  Deleted: 0  Skipped: 0  Warnings: 0
$ mysql -e 'SELECT * FROM imptest' test
+------+---------------+
| id   | n             |
+------+---------------+
|  100 | Max Sydow     |
|  101 | Count Dracula |
+------+---------------+
<a NAME="IDX671"></a> </pre>

<h2><a NAME="myisampack" HREF="manual_toc.html#myisampack">12.5 MySQL压缩只读表生成器</a></h2>

<p><code>myisampack</code>被用来压缩MyISAM表,而<code>pack_isam</code>被用来压缩ISAM表。由于ISAM表被淘汰,这里我们将只讨论<code>myisampack</code>。 
</p>

<p><code>myisampack</code>是当你订购超过10个许可证或扩展的支持时,你得到的一个额外的实用程序。因为这些仅以二进制形式被分发,他们仅在某些平台上可用。 
</p>

<p>下面我们仅谈论<code>myisampack</code>, 但是每件事情对<code>pack_isam</code>也是持有的。 
</p>

<p><code>myisampack</code>通过单独压缩表中的每个列来工作。当表被打开时,需要加压缩的信息被读进内存,这使得在存取单个记录时能得到更好的性能,因为你只需要解压缩一个记录,不是更大的磁盘块,象在 
MSDOS上使用Stacker时一样。通常,<code>myisampack</code>压缩数据文件40%-70%。 
</p>

<p><strong>MySQL</strong>使用内存映射(<code>mmap()</code>)在压缩表上而如果<code>mmap()</code>的使用不工作,倒回到正常的读/写文件。 
</p>

<p>当前<code>myisampack</code>有2个限制: 

<ul>
  <li>在压缩后,表只能读。 </li>
  <li><code>myisampack</code>也能压缩<code>BLOB</code>或<code>TEXT</code>列。较老的<code>pack_isam</code>不能做到。 
  </li>
</ul>

<p>修正这些限制以在我们的TODO表上,但是具有低优先级。 </p>

<p><code>myisampack</code>象这样调用: </p>

<pre>shell&gt; myisampack [options] filename ...
</pre>

<p>每个文件名应该是一个索引(<tt>“.MYI”</tt>) 
文件名。如果你不在数据库目录下,你应该指定文件的路径名。允许省略<tt>“.MYI”</tt>扩展名。 
</p>

<p><code>myisampack</code>支持下列选项: 

<dl COMPACT="myisampack">
  <dt><code>-b, --backup</code> </dt>
  <dd>制作表的一个备份,为<code>tbl_name.OLD</code>。</dd>
  <dt><code>-#, --debug=debug_options</code> </dt>
  <dd>输出调试日志。<code>debug_options</code>串经常是<code>'d:t:o,filename'</code>。 
  </dd>
  <dt><code>-f, --force</code> </dt>
  <dd>即使它变得更大或如果临时文件存在,强制表的压缩。(<code>myisampack</code>在压缩表时创建一个名位<tt>“tbl_name.TMD”</tt>的临时文件。如果你杀死<code>myisampack</code>,<tt>“.TMD”</tt>文件不能被删除。通常,如果<code>myisampack</code>发现<tt>“tbl_name.TMD”</tt>存在,它以一个错误退出。用<code>--force</code>,<code>myisampack</code>不管怎样都压缩表。 
  </dd>
  <dt><code>-?, --help</code> </dt>
  <dd>显示一条帮助消息并且退出。 </dd>
  <dt><code>-j big_tbl_name, --join=big_tbl_name</code> </dt>
  <dd>联结所有在命令行上被命名的表到一个单独的表<code>big_tbl_name</code>中。所有要被合并的表必须是相同的(同样的列名字和类型,同样的索引,等等。)</dd>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -