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

How to import data from CSV file to database

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

首先,我需要帮助为 csv 文件的每一列创建特定的 table,因为我对 mysql 很陌生,而且我不太确定哪些属性分配给每个 table。

这是 csv 文件的结构...

pid, start_time, end_time, epoch_start, epoch_end, complete_title, media_type, masterband, service, 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), 音频 (media_type), bbc_radio_four (母带), bbc_radio_four (服务), b006qykl (brand_pid),0 (is_clip), [9100005:1:factual.9200041:2:arts_culture_and_the_media.9200055:2:history] ​​(类别), [democracy.history.philosophy.plato.ancient_greece] (标签)

这将生成创建 table 查询 $1 将成为 table 名称

[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  ( "
head -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
}

先创建您的table,然后再使用

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

将文件中的数据插入新的 table。

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

mysql -uusername -ppassword --local-infile 

关于创建 table:

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

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