mysql - 我正在从第一列的 CSV 文件中获取 MySQL 中导入的所有数据。所有其他列都获取 NULL 值

标签 mysql mysqlimport

我在 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?

之前创建的表包含支持要加载的数据所需的所有列。

最佳答案

我认为 mysqlimport 正在寻找一个反斜杠双引号来括住字段,但它没有找到任何反斜杠双引号,所以它都是一个字段。

我质疑双引号之前的反斜杠字符的用途。如果这是针对 Linux bash shell,我认为不需要反斜杠来指定双引号。作为演示:

# echo foo --fields-enclosed-by='\"'
foo --fields-enclosed-by=\"

# echo foo --fields-enclosed-by='"'
foo --fields-enclosed-by="

(这只是一个猜测,我可能是错的。我之前已经错了很多次了。mysqlimport 可能会丢弃传递给它的反斜杠字符。问题可能是其他问题。但是为了测试,我会在没有反斜杠的情况下旋转它,看看没有它它会产生多大的烟球。)

演示环境:

# uname -o -r -s
Linux 3.13.0-83-generic GNU/Linux

# echo $SHELL
/bin/bash

关于mysql - 我正在从第一列的 CSV 文件中获取 MySQL 中导入的所有数据。所有其他列都获取 NULL 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37930310/

相关文章:

mysqlimport速度----制表符分隔的转储文件与SQL格式文件

mysql - 编写MapReduce ETL作业

mysql - 亚马逊 RDS MySQL : setting user names and passwords

php - 按月显示日期

csv - MySQL 第 1 行 CSV 输入中的列数无效

MySQL 早于 1980 年的日期时间值不正确

mysql - 如何使用sql计算一小时(日期时间)内的记录数

MySQL:按节数排序

mysql - 查询性能差异

mysql - mysqlimport --delete 背后发生了什么? auto_increment 值没有被重置