1

所以,我在我的项目中使用 Laravel 和 PostgreSQL,我想将数据从我的 .csv 文件导入数据库。到目前为止,我写了这段代码:

<?php
use Illuminate\Database\Seeder;
use League\Csv\Reader;

class MigracaoBaseUsuarioSeeder extends Seeder{
    public function run()
    {
        $usedData = [];
        $file = database_path().'/seeds/csv/migracao/base_usuario.csv';
        $csv = Reader::createFromPath($file);
        $csv->setOffset(1);

        $nbInsert = $csv->each(function ($row)  {
            // return false if there is no data
            if ( empty($row)) return false;
            \DB::table('users')->insert(
                array(
                    'id' => $row[0],
                    'password' => bcrypt($row[7]),
                    'is_superuser' => $row[3],
                    'username' => $row[4],
                    'email' => $row[7],
                    'is_staff' => $row[8],
                    'is_active' => $row[9],
                    'created_at' => $row[10],
                    'nome' => $row[11],
                    'cpf' => $row[12],
                    'rg' => $row[13],
                    'telefone' => $row[14],
                    'comprovante' => $row[15],
                    'tipo_usuario' => $row[16],
                    'instituicao_formadora_id' => $row[17],
                    'municipio_id' => $row[18],
                    'declaracao' => $row[19],
                    'gestor' => $row[20],
                )
            );
            return TRUE; // if return is FALSE, iteration will stop
        });
    }
}

仅当其中一些列为空时才会出现此问题,例如“instituicao_formadora_id”。

当我运行此代码时,我收到一个错误:

[PDOException]                                                               
  SQLSTATE[22P02]: Invalid text representation: 7 ERRO:  input sintax is invalid for integer: ""

在我的 .csv 文件中,我有类似的内容:

信息,信息,信息,信息,信息,信息

那么,我怎样才能跳过空值呢?

4

0 回答 0