【发布时间】:2016-06-20 19:26:02
【问题描述】:
我是在我的 Mac 本地使用 MySQL。 我有一个 CSV 文件,所有字段都用双引号括起来。 这是我的 CSV 文件的第一行的摘录:
$ head -5 companies.csv
"COMPANY_ADDRESS1","COMPANY_ADDRESS2","COMPANY_CITY","COMPANY_COUNTRY","COMPANY_FAX","COMPANY_GERMANY","COMPANY_ID","COMPANY_INDIANAPOLIS","COMPANY_NAME","COMPANY_STATE","COMPANY_TELEPHONE","COMPANY_VAT","COMPANY_ZIP"
"980 Madison Avenue","6th Floor","New York","USA","","","1393","","Lucky Fives LLC","NY","212-74-2313","","10075"
"1209 Orange Street","","Wilmington","USA","","","1394","","Global Five Holdings","DE","-","","19801"
"2020 Ponce de Leon Boulevard","PH2","Coral Gables","USA","","1015110","1395","","Lion Aero Corporation","FL","305-755-5120","","33134"
"100 NE Adams Street","","Peoria","USA","","","1396","","Caterpillar Inc.","IL","+13096755975","","61630"
这是我的导入命令:
$ mysqlimport --local --ignore-lines=1 my_db companies.csv -u root --fields-enclosed-by='\"' --lines-terminated-by='\r\n' --fields-terminated-by=','
我正在导入所有记录,没有任何内容被跳过:
companies: Records: 3063 Deleted: 0 Skipped: 0 Warnings: 104
但是,为什么我在第一列中导入了所有数据,而所有其他列都填充了 NULL?
之前创建的表包含支持要加载的数据所需的所有列。
【问题讨论】:
-
MySQL 不需要转义的双引号
\"并且它已经被 shell 转义了,因为它包含在单引号'\"'中——所以你正在定义 fields-enclosed -by 是 反斜杠引用,not 只是 quote。试试--fields-enclosed-by='"' -
不使用反斜杠时同样的问题,我可以使用'"'或'\"',结果相同,所有日期都进入第一列。
-
我以几乎相同的方式运行更改后的命令,并且运行良好。这是我运行的命令:
mysqlimport -u username -p --local --ignore-lines=1 myschema tablename.csv --fields-enclosed-by='"' --lines-terminated-by='\n' --fields-terminated-by=','(... schema/table/user 从我的 actual 命令替换) 我只是以\n而不是\r\n终止,因为我创建了 csv 文件我的 Mac(OS X 是 Unix) -
运行几乎相同并导入了一半: $ mysqlimport -u root --local --ignore-lines=1 rr_ccdb Companies.csv --fields-enclosed-by='"' --lines -terminated-by='\n' --fields-terminated-by=',' rr_ccdb.companies:记录:1532 已删除:0 跳过:0 警告:1613
标签: mysql mysqlimport