我有一个包含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](标签)
答案 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......);