2017-02-28 144 views
-2

我有一个csv文件,它有13列,这些列中的每一列都有很多很多的数据,我需要的是能够将这些数据从.csv文件中提取到mysql数据库。如何将数据从CSV文件导入数据库

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

下面是CSV文件的结构...

PID,START_TIME,END_TIME,epoch_start,epoch_end,complete_title,媒体类型,masterband,服务,brand_pid,is_clip,分类,标签

下列中的数据 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](tags)

+1

你看到这个链接 http://stackoverflow.com/questions/11448307/importing-csv-data-using-php-mysql –

回答

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......); 
+0

克里希纳你好,谢谢您的回复!只是想知道,只需要创建1个表格,因为我有13个字段,所以我假设我需要为每个表格分别创建一个表格......或者只需要创建一个表格,这就是我挣扎的地方。 .. –

+0

这是否解决您的问题?如果是这样,你可以通过接受这个答案来关闭它 – Krishnakumar

+0

@ Jason-D取决于你在数据库中需要什么。为此,您可以创建一个包含13列名称的单个表格,然后执行插入操作。 – Krishnakumar

0

这将生成创建表查询$ 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 
}