它已经在这里了,但我没有找到答案。我试图插入数据从csv文件到mysql表客户使用LOAD DATA INFILE命令
我已经使用了这个语法的许多修改,但它总是返回0行受影响。我犯了什么错误?这是我的语法(运行MySQL 8服务器在Windows Server 2017环境)
LOAD DATA INFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/customers.csv' INTO TABLE customers
CHARACTER SET UTF8MB4
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES (ID,ClientNo,CustomerNo,LastName,FirstName,PhoneNumber,FaxNumber,PhoneNumberPrivate,MobileNumber,Email);
CSV文件如下所示:
ID,ClientNo,CustomerNo,LastName,FirstName,PhoneNumber,FaxNumber,PhoneNumberPrivate,MobileNumber,Email
4911556,19,540789,Name1,Name2,00403651205,,,+403651205,luboxxxx5@axxxt.com
4911560,19,540790,Name52,Name56,015344492,,,+15344492,alxx.ss@gmail.com
4911561,19,540791,Name222,Name58,0904385448,,,4385448,
4911562,19,540792,Name547,Name555,7314727,,,+07314727,
4911967,5,1311473,Name789,Name562,+444839,,,,semxxxx@cxxxxrum.com
要插入的表如下所示:CREATE TABLE 'customers' ( 'ID' int(11) DEFAULT NULL, 'ClientNo' int(11) DEFAULT NULL, 'CustomerNo' int(11) DEFAULT NULL, 'FirstName' varchar(50) DEFAULT NULL, 'LastName' varchar(50) DEFAULT NULL, 'PhoneNumber' varchar(50) DEFAULT NULL, 'FaxNumber' varchar(50) DEFAULT NULL, 'PhoneNumberPrivate' varchar(50) DEFAULT NULL, 'MobileNumber' varchar(50) DEFAULT NULL, 'Email' varchar(50) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8
我真的不知道现在,在哪里和什么。这将是一些细节,我错过了我想,但我现在不能看到它。有人能很快看看吗?
2条答案
按热度按时间mccptt671#
对我来说,问题是第一行的列名被引用了,并且数据是用
FIELDS ENCLOSED BY '"'
(和ESCAPED BY '"'
)导入的,实际上,我发现任何单引号都会导致“0行受影响”的结果。与问题所述不完全相同,但可能相关。
agxfikkp2#
我被同样的问题卡住了。我认为这与以0开头的数字有关。我的列(邮政编码)确实被设置为VARCHAR,但没有用。
但只有在我打开Excel中的CSV后,导入才起作用,Excel会自动去掉数字开头的0。所以现在,CSV中显示的不是[“01234”],而是[1234](在记事本中打开,使用[ ]只是为了指示值的开始和结束位置)。
幸运的是,我可以很容易地
CONCAT("0", zipcode) WHERE zipcode<100000
恢复真实的数据.所以我建议你想办法去掉开头的0,或者用一个字符替换它,然后再加上0?这就是我得到的全部:¶(¶)/¶(不起作用,请阅读编辑)
编辑:我试着用$替换前面的0(在excel中做的),并去掉CSV文件中的“,但仍然不起作用,0行受到影响。我超级困惑。我也试着去掉像“Λ”这样的特殊字符,但没有什么区别。