将CSV文件直接导入MySQL

我想将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中的列名称与数据库表中的列名称不同,我该怎么办?我想以编程方式来做。


慕婉清6462132
浏览 716回答 3
3回答

潇潇雨雨

您可以创建一个脚本来解析您的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);    }

慕哥9229398

但是csv中的列名称与数据库表中的列名称不同,我该怎么办?没问题 您可以指定将哪个CSV列导入到哪个数据库列中。LOAD DATA INFILE语法默认情况下,当在LOAD DATA INFILE语句的末尾未提供任何列列表时,输入行应包含每个表列的字段。如果只想加载表的某些列,请指定列列表:LOAD DATA INFILE 'persondata.txt' INTO TABLE persondata (col1,col2,...);当我发现INFILE语法太复杂时,我想做的事情是使用图形客户端(如HeidiSQL)一起单击适当的列顺序(它具有图形预览),然后复制并粘贴生成的SQL查询。

偶然的你

如果您只想将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)
打开App,查看更多内容
随时随地看视频慕课网APP