laravel - 导入csv文件到数据库

本文详细讲解如何利用Laravel框架处理CSV文件,高效地将数据导入到数据库中,包括文件上传、数据验证和批量插入等关键步骤。
摘要由CSDN通过智能技术生成
public function import()
    {
        set_time_limit(0);
        $content = file_get_contents('./shop.csv');
        $file_type = mb_detect_encoding($content,array('UTF-8','GBK','LATIN1','BIG5'));

        \Excel::load('./shop.csv',function($reader){
            $store_id   = $this->storeId();
            $data = $reader->all()->toArray();
            if(count($data) > 0){
                foreach ($data as $k => $v) {
                    $shop = new Shop;
                    $is_exist = Shop::where('shop_code', (string)(int)$v[1])->where('store_id', $store_id)->first();
                    if(empty($is_exist)) {
                        $shop->store_id  = $store_id;       //store_id
                        $shop->shop_code = (string)(int)$v[1]; //shop_code
                        $shop->name      = $v[2]??'';      //name
              
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一些常见数据库管理系统的导入CSV文件数据库表的示例操作步骤: MySQL: 1. 使用 LOAD DATA INFILE 命令导入数据,示例语句如下: ``` LOAD DATA INFILE 'filename.csv' INTO TABLE tablename FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS; ``` 其中,filename.csv 是要导入CSV 文件名,tablename 是要导入数据的表名,FIELDS TERMINATED BY ',' 表示字段之间用逗号分隔,ENCLOSED BY '"' 表示字段值用双引号括起来,LINES TERMINATED BY '\n' 表示行之间用换行符分隔,IGNORE 1 ROWS 表示忽略 CSV 文件中的第一行表头。 2. 使用 LOAD DATA LOCAL INFILE 命令导入本地 CSV 文件(需要先启用 local_infile 参数),示例语句如下: ``` SET GLOBAL local_infile = 1; LOAD DATA LOCAL INFILE 'filename.csv' INTO TABLE tablename FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS; ``` PostgreSQL: 1. 使用 COPY 命令导入数据,示例语句如下: ``` COPY tablename FROM 'filename.csv' WITH CSV HEADER DELIMITER ',' QUOTE '"' ESCAPE '\'; ``` 其中,filename.csv 是要导入CSV 文件名,tablename 是要导入数据的表名,WITH CSV HEADER 表示 CSV 文件中包含表头,DELIMITER ',' 表示字段之间用逗号分隔,QUOTE '"' 表示字段值用双引号括起来,ESCAPE '\' 表示转义字符为反斜杠。 2. 使用 \copy 命令导入本地 CSV 文件,示例语句如下: ``` \copy tablename FROM 'filename.csv' WITH CSV HEADER DELIMITER ',' QUOTE '"' ESCAPE '\'; ``` Oracle: 1. 使用 SQL*Loader 工具导入数据,示例语句如下: ``` LOAD DATA INFILE 'filename.csv' INTO TABLE tablename FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS; ``` 其中,filename.csv 是要导入CSV 文件名,tablename 是要导入数据的表名,FIELDS TERMINATED BY ',' 表示字段之间用逗号分隔,OPTIONALLY ENCLOSED BY '"' 表示字段值用双引号括起来,TRAILING NULLCOLS 表示忽略 CSV 文件中的空列。 2. 使用外部表(External Table)导入数据,示例语句如下: ``` CREATE TABLE tablename_external ( column1 datatype1, column2 datatype2, column3 datatype3 ) ORGANIZATION EXTERNAL ( TYPE ORACLE_LOADER DEFAULT DIRECTORY dir_name ACCESS PARAMETERS ( RECORDS DELIMITED BY '\n' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' MISSING FIELD VALUES ARE NULL ) LOCATION ('filename.csv') ) REJECT LIMIT UNLIMITED; ``` 其中,dir_name 是 Oracle 目录的名称,filename.csv 是要导入CSV 文件名,ACCESS PARAMETERS 中的参数与上述 SQL*Loader 工具中的参数相同,REJECT LIMIT UNLIMITED 表示导入时出现错误时不限制错误数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值