从 CSV 或其他 TAB DELIMITED 或类似文件格式加载数据至关重要日常运作。使用 MySQL,可以轻松使用文件将数据加载到表中,并将数据导出到 CSV 文件中也非常容易。无需使用任何外部工具,可以通过查询工具/命令提示符直接完成,不需要特定的 GUI 工具。
让我们看看如何?
只需在查询中添加 INTO OUTFILE [FILE_PATH] 即可完成。这是一个简单的示例:
SELECT * FROM [TABLE]<br />INTO OUTFILE 'X:/[FILE]'
上面的语句使用默认选项来导出查询结果集的文件,但覆盖它们很简单。默认情况下,文件将为制表符分隔文件。我们总是可以重写,如下例所示:
SELECT * FROM [TABLE] INTO OUTFILE 'X:/[FILE]'<br />FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'<br />LINES TERMINATED BY 'n'
OR
SELECT * INTO OUTFILE 'X:/[FILE]'<br />FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'<br />LINES TERMINATED BY 'n'<br />FROM [TABLE]
美妙之处在于,将 FROM TABLE 子句放在哪里并不重要,任何样式都会从上面的例子开始工作。不要忘记,我们可以使用 SELECT 中真正使用的所有复杂联接或 where 条件。
完整语法:
SELECT<br />[ALL | DISTINCT | DISTINCTROW ]<br />[HIGH_PRIORITY]<br />[STRAIGHT_JOIN]<br />[SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]<br />[SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]<br />select_expr [, select_expr ...]<br />[FROM table_references<br />[WHERE where_condition]<br />[GROUP BY {col_name | expr | position}<br />[ASC | DESC], ... [WITH ROLLUP]]<br />[HAVING where_condition]<br />[ORDER BY {col_name | expr | position}<br />[ASC | DESC], ...]<br />[LIMIT {[offset,] row_count | row_count OFFSET offset}]<br />[PROCEDURE procedure_name(argument_list)]<br />[INTO OUTFILE 'file_name' export_options<br />| INTO DUMPFILE 'file_name'<br />| INTO var_name [, var_name]]<br />[FOR UPDATE | LOCK IN SHARE MODE]]
这是最简单的方法:
LOAD DATA INFILE 'X:/[FILE]'<br />INTO TABLE [TABLE]
与 MySQL 的导出选项类似,如果我们不以最简单的形式为其指定任何选项,它会期望文件为制表符分隔符。因此,如果您简单地导出没有任何自定义规范的文件作为第一个查询示例,它将简单地从该文件加载数据,但如果您有一个带有自定义分隔符的文件,则需要指定它。
LOAD DATA INFILE 'X:/[FILE]'<br />INTO TABLE [TABLE]
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY 'n'
完整syntex:
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'<br />[REPLACE | IGNORE]<br />INTO TABLE tbl_name<br />[CHARACTER SET charset_name]<br />[{FIELDS | COLUMNS}<br />[TERMINATED BY 'string']<br />[[OPTIONALLY] ENCLOSED BY 'char']<br />[ESCAPED BY 'char']<br />]<br />[LINES<br />[STARTING BY 'string']<br />[TERMINATED BY 'string']<br />]<br />[IGNORE number LINES]<br />[(col_name_or_user_var,...)]<br />[SET col_name = expr,...]
因此从 MySQL 导出和导入数据似乎非常简单,我们不需要编写任何编程语句来格式化它们,只需一个简单的查询即可完成。
参考: (更多参考请参考)
http://dev.mysql.com/doc/refman/5.0/en/select.html
http://dev.mysql.com/doc/refman/5.1/ en/load-data.html