为了账号安全,请及时绑定邮箱和手机立即绑定

将CSV文件直接导入MySQL

/ 猿问

将CSV文件直接导入MySQL

慕婉清6462132 2019-10-21 14:24:24

我想将csv文件导入到mysql中。


load data local infile 'uniq.csv' into table tblUniq

fields terminated by ','

enclosed by '"'

lines terminated by '\n'

(uniqName, uniqCity, uniqComments)

http://www.tech-recipes.com/rx/2345/import_csv_file_direct_into_mysql/


但是csv中的列名称与数据库表中的列名称不同,我该怎么办?我想以编程方式来做。


查看完整描述

3 回答

?
慕哥9229398

但是csv中的列名称与数据库表中的列名称不同,我该怎么办?


没问题 您可以指定将哪个CSV列导入到哪个数据库列中。


LOAD DATA INFILE语法


默认情况下,当在LOAD DATA INFILE语句的末尾未提供任何列列表时,输入行应包含每个表列的字段。如果只想加载表的某些列,请指定列列表:


LOAD DATA INFILE 'persondata.txt' INTO TABLE persondata (col1,col2,...);

当我发现INFILE语法太复杂时,我想做的事情是使用图形客户端(如HeidiSQL)一起单击适当的列顺序(它具有图形预览),然后复制并粘贴生成的SQL查询。


查看完整回答
反对 回复 2019-10-21
?
偶然的你

如果您只想将CSV文件中最后一列的前7个字符加载到表的uniqComments列中,则可以执行以下操作...


load data local infile 'uniq.csv' into table tblUniq fields terminated by ',' 

enclosed by '"' lines terminated by '\n' (uniqName, uniqCity, @seven_chars) 

set uniqComments=left(@seven_chars,7)


查看完整回答
反对 回复 2019-10-21
?
潇潇雨雨

您可以创建一个脚本来解析您的csv文件并将数据放入db。


就像是:


    $path = "yourfile.csv";

    $row = 1;

    if (($handle = fopen($path, "r")) !== FALSE) {

        while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {

            $row++;

            $data_entries[] = $data ;


        }

        fclose($handle);

    }

    // this you'll have to expand

    foreach($data_entries as $line){

        $sql = "INSERT INTO ..."

        $db->execute($line);

    }


查看完整回答
反对 回复 2019-10-21

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信