【问题标题】:MySQL: LOAD DATA LOCAL INFILE adds extra character '\r'MySQL:LOAD DATA LOCAL INFILE 添加了额外的字符 '\r'
【发布时间】:2018-07-16 11:33:46
【问题描述】:

我有一张这样的桌子:

    CREATE TABLE `tblinquiries` (
  `UID` varchar(50) DEFAULT NULL,
  `ReviewDate` date NOT NULL,
  `InquiryId` varchar(50) DEFAULT NULL,
  `AuditStatus` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`InquiryId`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

我有一个包含数据的 csv 文件:

UID,ReviewDate,InquiryId,AuditStatus

UID1,2018-07-06,109814969,Check

UID2,2018-07-06,109866072,Check

UID3,2018-07-06,109911408,Check

UID4,2018-07-06,109798278,Check

我使用以下命令上传数据:

   $location = '../uploads/';
   $name = $_FILES["file"]["name"];
   $filePath = $location.$name;
   $table = 'tblinquiries';

   LOAD DATA LOCAL INFILE "'.$filePath.'"
   INTO TABLE '.$table.'
   FIELDS TERMINATED by \',\' OPTIONALLY ENCLOSED BY \'"\'
   LINES TERMINATED BY \'\n\'
   IGNORE 1 LINES

它会上传数据,但会在第二行添加额外的字符“\r”。我导出了数据,结果如下:

('UID4', '2018-07-06', '109798278', 'Check'),
('UID1', '2018-07-06', '109814969', 'Check\r'),
('UID2', '2018-07-06', '109866072', 'Check\r'),
('UID3', '2018-07-06', '109911408', 'Check\r');

运行后:

SELECT AuditStatus, LENGTH(AuditStatus) FROM `tblinquiries`

得到:

AuditStatus LENGTH(AuditStatus)
Check          5
Check          6
Check          6
Check          6

我该如何解决这个问题?

【问题讨论】:

  • 您可以尝试将终止的行更改为 \r\n 并进行适当的转义。

标签: mysql webclient.uploaddata


【解决方案1】:

我会假设您的源数据具有那些 \r 控制字符,因为 LOAD DATA 通常不会将数据添加到源文件(除非您告诉它这样做,但似乎并非如此) .我们可以尝试在AuditStatus 列上运行RTRIM

LOAD DATA LOCAL INFILE "'.$filePath.'"
INTO TABLE '.$table.'
FIELDS TERMINATED by \',\' OPTIONALLY ENCLOSED BY \'"\'
LINES TERMINATED BY \'\n\'
IGNORE 1 LINES
(UID, ReviewDate, InquiryId, @AuditStatus)
SET AuditStatus = RTRIM(@AuditStatus);

【讨论】:

    【解决方案2】:

    正如@Sloan 建议的那样,我更改了行终止符并解决了问题。 这是最终代码。

            LOAD DATA LOCAL INFILE "'.$filePath.'"
            INTO TABLE '.$table.'
            FIELDS TERMINATED by \',\' OPTIONALLY ENCLOSED BY \'"\'
            LINES TERMINATED BY \'\r\n\'
            IGNORE 1 LINES
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-05
      相关资源
      最近更新 更多