所以,我在我的项目中使用 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 文件中,我有类似的内容:
信息,信息,信息,信息,信息,信息
那么,我怎样才能跳过空值呢?