zoukankan      html  css  js  c++  java
  • MySQL select into outfile 和 load data infile数据跨库转移

    select into outfile用法

    SELECT ... FROM TABLE_A
    INTO OUTFILE "/path/to/file"
    FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
    LINES TERMINATED BY '
    ';

    MySQL中,可以使用SELECT...INTO OUTFILE语句将表的内容导出为一个文本文件。其基本的语法格式如下:

    SELECT [列名] FROM table [WHERE 语句]
            INTO OUTFILE '目标文件' [OPTION];

    该语句分为两个部分。前半部分是一个普通的SELECT语句,通过这个SELECT语句来查询所需要的数据;

    后半部分是导出数据的。其中,“目标文件”参数指出将查询的记录导出到哪个文件中;

    “OPTION”参数为可选参数选项,其可能的取值有:

    • FIELDS TERMINATED BY '字符串':设置字符串为字段之间的分隔符,可以为单个或多个字符。默认值是“ ”。
    • FIELDS ENCLOSED BY '字符':设置字符来括住字段的值,只能为单个字符。默认情况下不使用任何符号。
    • FIELDS OPTIONALLY ENCLOSED BY '字符':设置字符来括住CHAR、VARCHAR和TEXT等字符型字段。默认情况下不使用任何符号。
    • FIELDS ESCAPED BY '字符':设置转义字符,只能为单个字符。默认值为“”。
    • LINES STARTING BY '字符串':设置每行数据开头的字符,可以为单个或多个字符。默认情况下不使用任何字符。
    • LINES TERMINATED BY '字符串':设置每行数据结尾的字符,可以为单个或多个字符。默认值是“ ”。

    FIELDS和LINES两个子句都是自选的,但是如果两个子句都被指定了,FIELDS必须位于LINES的前面。

    注意:

    该语法中的“目标文件”被创建到服务器主机上,因此必须拥有文件写入权限(FILE权限)后,才能使用此语法。同时,“目标文件”不能是一个已经存在的文件。

    SELECT...INTO OUTFILE语句可以非常快速地把一个表转储到服务器上。如果想要在服务器主机之外的部分客户主机上创建结果文件,则不能使用SELECT...INTO OUTFILE语句。

    load data infile用法

    LOAD DATA INFILE "/path/to/file" INTO TABLE table_name;
    注意:如果导出时用到了FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '
    '语句,那么LOAD时也要加上同样的分隔限制语句。还要注意编码问题。

    举个栗子:

    导出example数据库下employee表的记录。其中,字段之间用“、”隔开,字符型数据用双引号括起来。每条记录以“>”开头。SQL代码如下:

    SELECT * FROM example.employee INTO OUTFILE 'D:/tmp/emp.txt'
        FIELDS
            TERMINATED BY ''
            OPTIONALLY ENCLOSED BY '"'
        LINES
            STARTING BY '>'
            TERMINATED BY '
    ';

    FIELDS必须位于LINES的前面,多个FIELDS子句排列在一起时,后面的FIELDS必须省略;同样,多个LINES子句排列在一起时,后面的LINES也必须省略。

    如果在employee表中包含了中文字符,需要注明编码格式, CHARACTER SET gbk|utf8 语句,SQL代码如下:

    SELECT * FROM example.employee INTO OUTFILE 'F:/tmp/emp.txt'
        
    CHARACTER SET utf8
    
        FIELDS
            TERMINATED BY ''
            OPTIONALLY ENCLOSED BY '"'
        LINES
            STARTING BY '>'
            TERMINATED BY '
    ';

    “TERMINATED BY ' '”可以保证每条记录占一行。因为Windows操作系统下“ ”才是回车换行。如果不加这个选项,默认情况只是“ ”

  • 相关阅读:
    操作集锦
    大吉大利(算贡献)
    96. 奇怪的汉诺塔
    P760通天之汉诺塔
    First Last Sorting
    9.12小结
    day_06
    day_05作业
    day_05
    day_04
  • 原文地址:https://www.cnblogs.com/tijun/p/8671217.html
Copyright © 2011-2022 走看看