首页 文章

MYSQL使用LOAD DATA INFILE从csv导入数据

提问于
浏览
80

我将一些包含20000行的数据从CSV文件导入到Mysql中 .

CSV中的列与MySQL表的列的顺序不同 . 如何自动分配与Mysql表列对应的列?

当我执行

LOAD DATA INFILE'abc.csv' INTO TABLE abc

此查询将所有数据添加到第一列 .

请建议将数据导入Mysql的自动语法 .

10 回答

  • 0

    您可以使用 LOAD DATA INFILE 命令将 csv 文件导入表中 .

    检查此链接MySQL - LOAD DATA INFILE .

    LOAD DATA LOCAL INFILE 'abc.csv' INTO TABLE abc
    FIELDS TERMINATED BY ',' 
    ENCLOSED BY '"' 
    LINES TERMINATED BY '\r\n'
    IGNORE 1 LINES
    (col1, col2, col3, col4, col5...);
    
  • 2

    您可能需要设置 FIELDS TERMINATED BY ',' 或任何分隔符 .

    对于CSV文件,您的语句应如下所示:

    LOAD DATA INFILE 'data.csv' INTO TABLE tbl_name
    FIELDS TERMINATED BY ',' ENCLOSED BY '"'
    LINES TERMINATED BY '\r\n'
    IGNORE 1 LINES;
    
  • 1

    在导入文件之前,您必须准备以下内容:

    • 将导入文件数据的数据库表 .

    • CSV文件,其数据与表的列数和每列中的数据类型相匹配 .

    • 连接到MySQL数据库服务器的帐户具有FILE和INSERT权限 .

    假设我们有以下表格:

    enter image description here

    使用以下查询创建表:

    CREATE TABLE IF NOT EXISTS `survey` (
      `projectId` bigint(20) NOT NULL,
      `surveyId` bigint(20) NOT NULL,
      `views` bigint(20) NOT NULL,
      `dateTime` datetime NOT NULL
    );
    

    您的CSV文件必须正确格式化,例如看到附加图像:

    enter image description here

    如果一切都很好..请执行以下查询从CSV文件加载数据:

    注意:请添加CSV文件的绝对路径

    LOAD DATA INFILE '/var/www/csv/data.csv' 
    INTO TABLE survey 
    FIELDS TERMINATED BY ',' 
    ENCLOSED BY '"'
    LINES TERMINATED BY '\r\n'
    IGNORE 1 LINES;
    

    如果一切都做了 . 您已成功将数据从CSV导出到表格

  • 126

    句法:

    LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL]
    INFILE 'file_name' INTO TABLE `tbl_name`
    CHARACTER SET [CHARACTER SET charset_name]
    FIELDS [{FIELDS | COLUMNS}[TERMINATED BY 'string']] 
    [LINES[TERMINATED BY 'string']] 
    [IGNORE number {LINES | ROWS}]
    

    看这个例子:

    LOAD DATA LOCAL INFILE
    'E:\\wamp\\tmp\\customer.csv' INTO TABLE `customer`
    CHARACTER SET 'utf8'
    FIELDS TERMINATED BY ',' ENCLOSED BY '"'
    LINES TERMINATED BY '\r\n'
    IGNORE 1 LINES;
    
  • 41

    在数据库中在1分钟内插入超过7000000条记录(超高速查询计算)

    mysqli_query($cons, '
        LOAD DATA LOCAL INFILE "'.$file.'"
        INTO TABLE tablename
        FIELDS TERMINATED by \',\'
        LINES TERMINATED BY \'\n\'
        IGNORE 1 LINES
        (isbn10,isbn13,price,discount,free_stock,report,report_date)
         SET RRP = IF(discount = 0.00,price-price * 45/100,IF(discount = 0.01,price,IF(discount != 0.00,price-price * discount/100,@RRP))),
             RRP_nl = RRP * 1.44 + 8,
             RRP_bl = RRP * 1.44 + 8,
             ID = NULL
        ')or die(mysqli_error());
    $affected = (int) (mysqli_affected_rows($cons))-1; 
    $log->lwrite('Inventory.CSV to database:'. $affected.' record inserted successfully.');
    

    RRP和RRP_nl和RRP_bl不在csv中,但是我们计算出来并在插入之后 .

  • 0

    假设您正在使用xampp和phpmyadmin

    你有文件名'ratings.txt'表名'评级'和数据库名称'电影'

    如果您的xampp安装在“C:\ xampp \”中

    将“ratings.txt”文件复制到“C:\ xampp \ mysql \ data \ movies”文件夹中

    LOAD DATA INFILE 'ratings.txt' INTO TABLE ratings FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES;
    

    希望这可以帮助您在localhost上执行此操作时省略错误

  • 43

    您可以从csv或文本文件加载数据 . 如果您有一个包含表中记录的文本文件,则可以在表中加载这些记录 . 例如,如果您有一个文本文件,其中每一行都是一个包含每列值的记录,您可以这样加载记录 .

    table.sql

    id //field 1
    
    name //field2
    

    table.txt

    1,peter
    
    2,daniel
    
    ...
    
    • 在Windows上进行示例
    LOAD DATA LOCAL INFILE 'C:\\directory_example\\table.txt'
    INTO TABLE Table
    CHARACTER SET UTF8
    FIELDS TERMINATED BY ','
    LINES TERMINATED BY '\r\n';
    
  • 0

    如果从Windows shell运行 LOAD DATA LOCAL INFILE ,并且需要使用 OPTIONALLY ENCLOSED BY '"' ,则必须执行以下操作才能正确转义字符:

    "C:\Program Files\MySQL\MySQL Server 5.6\bin\mysql" -u root --password=%password% -e "LOAD DATA LOCAL INFILE '!file!' INTO TABLE !table! FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"^""' LINES TERMINATED BY '\n' IGNORE 1 LINES" --verbose --show-warnings > mysql_!fname!.out
    
  • 0

    我收到错误代码:1290 . MySQL服务器运行时带有--secure-file-priv选项,因此无法执行此语句

    这对我使用wampserver 3.0.6 64bit在Windows 8.1 64位上工作 .

    从C:\ wamp64 \ bin \ mysql \ mysql5.7.14编辑了my.ini文件

    删除条目secure_file_priv c:\ wamp64 \ tmp \(或者你在这里的任何目录)

    停止一切 - 退出战士等 - 并重新启动一切;然后将我的cvs文件放在C:\ wamp64 \ bin \ mysql \ mysql5.7.14 \ data \ u242349266_recur上(最后一个dir是我的数据库名)

    执行LOAD DATA INFILE'myfile.csv'

    INTO TABLE alumnos

    字段被','终止

    包含在'''

    由'\ r \ n'终止的线路

    IGNORE 1 LINES

    ......和VOILA !!!

  • 9

    您可以尝试这样插入:

    LOAD DATA INFILE '/tmp/filename.csv' replace INTO TABLE [table name] FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (field1,field2,field3);
    

相关问题