标签: csv-import

如何逐行处理大型 CSV 文件?

我已经成功编写了一个脚本,该脚本使用 cURL 下载 CSV 文件,然后将 CSV 解析为数组,如下所示:

$rows = array_map(function($a) {
    return str_getcsv($a, $delimiter);
}, explode("\n", $result));
Run Code Online (Sandbox Code Playgroud)

然后我迭代$rows使用foreach将某些内容保存到数据库中。

该脚本运行良好,但是当使用较大的 CSV 文件(> 10.000 行)时,脚本会变得相当慢并且会出现更多错误。

我想将 CSV 文件分成几部分,所以不是整个文件都会被导入到一个变量中。我找到了以下解决方案,但它仍然一次处理整个文件。

有没有一种方法可以将CSV切成碎片并多次运行数据库功能?或者有没有更好的方法来处理这样的大型 CSV 文件?

我对处理大文件比较陌生,所以请多多关照!

php large-files fgetcsv csv-import

4
推荐指数
1
解决办法
3825
查看次数

使用 mysqlimport 将 csv 文件导入到 mysql 远程服务器

我有 4 个 csv 文件要导入到我的 AWS mysql 数据库中。

我正在尝试从 Windows 机器使用以下命令:

"C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqlimport.exe" -h myhostname.amazonaws.com -P 3306 -u admin -pmypassword --local --fields-terminated-by=, --lines-terminated-by="\r\n" ticketsdb tickets "Data_2014_1.csv"
Run Code Online (Sandbox Code Playgroud)

我得到的回应是这样的:

mysqlimport: [Warning] Using a password on the command line interface can be insecure.
mysqlimport: Error: 2, File 'tickets' not found (Errcode: 2 - No such file or directory), when using table: tickets
Run Code Online (Sandbox Code Playgroud)

mysql mysqlimport amazon-web-services csv-import

3
推荐指数
1
解决办法
4233
查看次数

LOAD DATA LOCAL INFILE 不导入任何记录

我正在处理一个需要使用 Workbench 将 csv 数据导入 mysql 表的项目。我尝试运行下面的命令。我没有收到任何错误,但是没有记录被导入到表中。请注意,我尝试更改以 to 结尾的行\n,也尝试了\r,这导致了相同的结果。

我感谢有关如何解决的任何建议。

这是我试过的查询:

LOAD DATA LOCAL INFILE 'data-to-import.csv' INTO TABLE db.t1
COLUMNS TERMINATED BY ','
LINES TERMINATED BY '\r\n' 
IGNORE 1 LINES
(id,age,spns,pns,spns2,sns,ps,ss,gid,term,band)
Run Code Online (Sandbox Code Playgroud)

数据导入.csv

 ,18,0.455,0.62,0.774,1.083,2.408,3.702,1,10,1
 ,19,0.455,0.62,0.774,1.083,2.408,3.702,1,10,1
 ,20,0.455,0.62,0.774,1.083,2.408,3.702,1,10,1
 ,21,0.455,0.62,0.774,1.083,2.408,3.702,1,10,1
 ,22,0.455,0.62,0.774,1.083,2.408,3.702,1,10,1
 ,23,0.455,0.62,0.774,1.083,2.408,3.702,1,10,1
 ,24,0.455,0.62,0.774,1.083,2.408,3.702,1,10,1
 ,25,0.455,0.62,0.774,1.083,2.408,3.702,1,10,1
 ,26,0.455,0.62,0.774,1.083,2.408,3.702,1,10,1
 ,27,0.455,0.62,0.774,1.083,2.408,3.702,1,10,1
 ,28,0.455,0.62,0.774,1.088,2.416,3.702,1,10,1
 ,29,0.455,0.62,0.792,1.121,2.489,3.702,1,10,1
Run Code Online (Sandbox Code Playgroud)

db.t1 定义

   CREATE TABLE `t1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `age` int(11) NOT NULL,
  `spns` decimal(4,4) NOT NULL,
  `pns` decimal(4,4) NOT NULL,
  `spns2` decimal(4,4) NOT NULL,
  `sns` decimal(4,4) NOT NULL,
  `ps` …
Run Code Online (Sandbox Code Playgroud)

mysql csv mysql-workbench csv-import

3
推荐指数
1
解决办法
2739
查看次数

如何使用django-import-export定义字段的admin导入格式

我正在尝试使用最近开源的django-import-export通过管理员导入一些数据,我需要选择自定义日期格式.

它有效,但有问题/更好的方法吗?

admin.py:

from import_export.admin import ImportExportMixin, ImportExportModelAdmin
from import_export import resources

from .models import Enrolment

class EnrolmentResource(resources.ModelResource):

    class Meta:
        model = Enrolment
        fields = ('id','source','firstname','surname','date_of_birth',
                  'bonus','status','tracking_comments')

        widgets = {
                'date_of_birth': {'format': '%d/%m/%Y'},
                }

class EnrolmentAdmin(ImportExportMixin, admin.ModelAdmin):

    def get_resource_class(self):
        if not self.resource_class:
            return EnrolmentResource
        else:
            return self.resource_class

admin.site.register(Enrolment, EnrolmentAdmin)
Run Code Online (Sandbox Code Playgroud)

django import csv-import

1
推荐指数
1
解决办法
3917
查看次数