hilioski / csv-seeder
允许使用CSV文件填充数据库并从字符串中提取清晰的单元
v1.0.7
2016-05-04 12:19 UTC
Requires
- php: >=5.3.0
- illuminate/support: >=4.1.0
This package is not auto-updated.
Last update: 2024-09-14 18:09:51 UTC
README
使用CSV文件填充数据库
此包允许基于CSV的种子。
安装
在composer.json中要求此包并运行composer update(或直接运行composer require hilioski/csv-seeder)
"hilioski/csv-seeder": "1.0.*"
用法
您的CSV文件的头行应与您希望导入的数据库列相匹配。例如,要导入id和name列,您的CSV文件应如下所示
id,name
1,Foo
2,Bar
种子类必须扩展Flynsarmy\CsvSeeder\CsvSeeder,它们必须定义目标数据库表和CSV文件路径,并且最后必须像这样调用parent::run()
use Flynsarmy\CsvSeeder\CsvSeeder;
class StopsTableSeeder extends CsvSeeder {
public function __construct()
{
$this->table = 'your_table';
$this->filename = base_path().'/database/seeds/csvs/your_csv.csv';
}
public function run()
{
// Recommended when importing larger CSVs
DB::disableQueryLog();
// Uncomment the below to wipe the table clean before populating
DB::table($this->table)->truncate();
parent::run();
}
}
将您的CSV文件放入/database/seeds/csvs/your_csv.csv或在上面的构造函数中指定的任何路径。
配置
除了设置数据库表和CSV文件名外,还有两个其他配置选项可用。它们可以在类的构造函数中设置
insert_chunk_size(int 500) 在读取CSV时,每当达到insert_chunk_size行数时,将触发一个SQL插入语句csv_delimiter(string ,) CSV字段分隔符。hashable(string password) 对可哈希字段进行哈希处理,如果您正在导入用户并需要将他们的密码哈希化,则很有用。使用Hash::make()。注意:这非常慢。如果您CSV中有大量行,导入将花费相当长的时间。offset_rows(int 0) 忽略CSV开头多少行。警告:如果使用,您可能想设置映射,因为CSV的头行将被忽略。mapping(array []) csvCol => dbCol的关联数组。有关详细信息,请参阅示例部分。如果未指定,则使用CSV(偏移后)的第一行作为映射。
示例
管道分隔的值CSV
public function __construct()
{
$this->table = 'users';
$this->csv_delimiter = '|';
$this->filename = base_path().'/database/seeds/csvs/your_csv.csv';
}
指定要导入的CSV列
public function __construct()
{
$this->table = 'users';
$this->csv_delimiter = '|';
$this->filename = base_path().'/database/seeds/csvs/your_csv.csv';
$this->mapping = [
0 => 'first_name',
1 => 'last_name',
5 => 'age',
];
}
跳过CSV头行(注意:如果这样做,则必须要求映射,因为CSV的头行将被忽略)
public function __construct()
{
$this->table = 'users';
$this->csv_delimiter = '|';
$this->filename = base_path().'/database/seeds/csvs/your_csv.csv';
$this->offset_rows = 1;
$this->mapping = [
0 => 'first_name',
1 => 'last_name',
2 => 'password',
];
}
从两个字符之间的字符串获取干净的单元(注意:$first_character和$last_character必须设置)
public function __construct()
{
$this->table = 'users';
$this->csv_delimiter = '|';
$this->filename = base_path().'/database/seeds/csvs/your_csv.csv';
$this->offset_rows = 1;
$this->mapping = [
0 => 'first_name',
1 => 'last_name',
2 => 'password',
];
$this->first_character = '"';
$this->last_character = '"';
// ex. "Test text" => Test text
}
许可证
CsvSeeder是开源软件,根据MIT许可证许可