如何将数据从CSV文件导入数据库

时间:2017-02-28 13:51:26

标签: php html mysql import-from-csv

我有一个包含13列的csv文件,这些列中的每一列都有大量的数据,我需要的是能够将这些数据从.csv文件中提取到mysql数据库中。

首先,我需要帮助为csv文件的每一列创建特定的表,因为我对mysql很新,我不太确定要分配给每个表的属性。

这是csv文件的结构......

pid,start_time,end_time,epoch_start,epoch_end,complete_title,media_type,masterband,service,brand_pid,is_clip,categories,tags

列下的数据 p00547jm(pid),1003394820(start_time),1003999620(end_time),2001-10-18T08:47:00(epoch_start),2001-10-25T08:47:00(epoch_end),in_our_time:_democracy(complete_title),audio( media_type),bbc_radio_four(masterband),bbc_radio_four(service),b006qykl(brand_pid),0(is_clip),[9100005:1:factual.9200041:2:arts_culture_and_the_media.9200055:2:history](categories),[democracy.history] .philosophy.plato.ancient_greece](标签)

2 个答案:

答案 0 :(得分:0)

这将生成create table查询$ 1将成为表名

[Create mysql table directly from CSV file using the CSV Storage engine?

#!/bin/sh
# pass in the file name as an argument: ./mktable filename.csv
echo "create table $1 ( "
head -1 $1 | sed -e 's/,/ varchar(255),\n/g'
echo " varchar(255) );"

然后你可以读取文件并将插入逻辑放入while循环

[Import CSV into MYSQL but ignore header row     //打开csv文件进行阅读     $ handle = fopen($ file_path,'r');

// read the first line and ignore it
fgets($handle); 

while (($data = fgetcsv($handle, 1000, ',')) !== FALSE) {
// do your thing
}

答案 1 :(得分:0)

首先创建表格,然后使用

LOAD DATA LOCAL INFILE '/home/dummy/dummy.csv' INTO TABLE tablename  
FIELDS TERMINATED BY ',';

将文件中的数据插入新表格。

另外,请确保在登录MySQL时使用

mysql -uusername -ppassword --local-infile 

至于创建表格:

我们可以提供语法,但我们无法为您编写整个查询。您可以自己尝试,因为您拥有必要的数据。

create table table_name (col1 datatype(size) NOT NULL primary key, 
col1......);