我已经成功编写了一个脚本,该脚本使用 cURL 下载 CSV 文件,然后将 CSV 解析为数组,如下所示:
$rows = array_map(function($a) {
    return str_getcsv($a, $delimiter);
}, explode("\n", $result));
然后我迭代$rows使用foreach将某些内容保存到数据库中。
该脚本运行良好,但是当使用较大的 CSV 文件(> 10.000 行)时,脚本会变得相当慢并且会出现更多错误。
我想将 CSV 文件分成几部分,所以不是整个文件都会被导入到一个变量中。我找到了以下解决方案,但它仍然一次处理整个文件。
有没有一种方法可以将CSV切成碎片并多次运行数据库功能?或者有没有更好的方法来处理这样的大型 CSV 文件?
我对处理大文件比较陌生,所以请多多关照!
我有 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"
我得到的回应是这样的:
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
我正在处理一个需要使用 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)
数据导入.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
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` …我正在尝试使用最近开源的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)
csv-import ×4
mysql ×2
csv ×1
django ×1
fgetcsv ×1
import ×1
large-files ×1
mysqlimport ×1
php ×1