繁体   English   中英

是否可以使用 MySQL - LOAD DATA LOCAL INFILE 仅上传 CSV 文件的前 10 行?

[英]Is it possible to upload only the first 10 rows of a CSV file using MySQL - LOAD DATA LOCAL INFILE?

是否可以使用 MySQL - LOAD DATA LOCAL INFILE 仅上传 CSV 文件的前 10 行? 我尝试使用 LIMIT 但它不起作用。

这是我的 PHP 脚本:

    $sql = "LOAD DATA LOCAL INFILE '".@mysql_escape_string($this->file_name).
         "' INTO TABLE branches
              FIELDS TERMINATED BY ',' ENCLOSED BY '\"'
              LINES TERMINATED BY '\r\n'
              IGNORE 1 LINES                  
              (
                Name,
                Address_Line_1, 
                City, 
                State, 
                Country_Code,
                Postal_Code, 
                Main_Phone, 
                Google_Places_Link, 
                Custom_Directory_1, 
                Custom_Directory_2, 
                Custom_Directory_3,  
                business_id,
                username
              ) SET branches.business_id=(".$this->business_id."), branches.username=('".$this->username."') LIMIT 0,10  
              ";

通过最后的 mysql 文档https://dev.mysql.com/doc/refman/8.0/en/load-data.html

LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'
    [REPLACE | IGNORE]
    INTO TABLE tbl_name
    [PARTITION (partition_name [, partition_name] ...)]
    [CHARACTER SET charset_name]
    [{FIELDS | COLUMNS}
        [TERMINATED BY 'string']
        [[OPTIONALLY] ENCLOSED BY 'char']
        [ESCAPED BY 'char']
    ]
    [LINES
        [STARTING BY 'string']
        [TERMINATED BY 'string']
    ]
    [IGNORE number {LINES | ROWS}]
    [(col_name_or_user_var
        [, col_name_or_user_var] ...)]
    [SET col_name={expr | DEFAULT},
        [, col_name={expr | DEFAULT}] ...]

没有办法/命令可以做你想做的事。

下面的解决方案为LOAD DATA INFILE提供了 LIMIT 风格的行为。 使用IGNORE n LINES并设置为总行数 - 无论您想要测试的任何小数字

这不会节省文件扫描,不优雅,并且向后工作(字面意思)。 但是对于长度小于一百万行的中等长度的表,对我来说它对测试很有用。 (它可能适用于更大的表,但我没有机会测试它。)

例如,具有 101,773 行的大表的最后 20 行将是

LOAD DATA INFILE 'c:/temp/input/datafile.csv'
    -- IGNORE
    INTO TABLE `mytable`
    
    CHARACTER SET utf8mb4
    FIELDS  TERMINATED BY '\t' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '\b'
    LINES TERMINATED BY '\r\n'
    IGNORE 101753 LINES

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM