pingcap / pingcap/tidb

SELECT INTO OUTFILE and then LOAD DATA INFILE is inconsistent with special character

Open
#33,300 1 comment 0 reactions 0 assignees View on GitHub
severity/moderate sig/transaction type/bug
Dominant language
Go
Stars
40.5k
Forks
6.2k
PR merge metrics
PR metrics pending

Description

## Bug Report

Please answer these questions before submitting your issue. Thanks!

### 1. Minimal reproduce step (Required)

```sql
CREATE TABLE t1 (id INT AUTO_INCREMENT PRIMARY KEY,c1 VARCHAR(255));
CREATE TABLE t2 ( id INT, c2 VARCHAR(255));
INSERT INTO t1 (c1) VALUES ('r'), ('rr'), ('rrr'), ('rrrr');
SELECT * FROM t1;
SELECT * FROM t1 INTO OUTFILE '/tmp/t2.txt' FIELDS ENCLOSED BY 'r' ;
LOAD DATA LOCAL INFILE '/tmp/t2.txt' INTO TABLE t2 FIELDS ENCLOSED BY 'r';
select * from t2;
```
### 2. What did you expect to see? (Required)
```sql

mysql> CREATE TABLE t1 (id INT AUTO_INCREMENT PRIMARY KEY,c1 VARCHAR(255));
Query OK, 0 rows affected (0.02 sec)

mysql> CREATE TABLE t2 ( id INT, c2 VARCHAR(255));
Query OK, 0 rows affected (0.02 sec)

mysql> INSERT INTO t1 (c1) VALUES ('r'), ('rr'), ('rrr'), ('rrrr');
Query OK, 4 rows affected (0.00 sec)
Records: 4 Duplicates: 0 Warnings: 0

mysql> SELECT * FROM t1;
+----+------+
| id | c1 |
+----+------+
| 1 | r |
| 2 | rr |
| 3 | rrr |
| 4 | rrrr |
+----+------+
4 rows in set (0.00 sec)

mysql> SELECT * FROM t1 INTO OUTFILE '/tmp/t1.txt' FIELDS ENCLOSED BY 'r' ;
Query OK, 4 rows affected (0.00 sec)

mysql> LOAD DATA LOCAL INFILE '/tmp/t1.txt' INTO TABLE t2 FIELDS ENCLOSED BY 'r';
Query OK, 4 rows affected (0.00 sec)
Records: 4 Deleted: 0 Skipped: 0 Warnings: 0

mysql> select * from t2;
+------+------+
| id | c2 |
+------+------+
| 1 | r |
| 2 | rr |
| 3 | rrr |
| 4 | rrrr |
+------+------+
4 rows in set (0.00 sec)

```
### 3. What did you see instead (Required)
```sql
mysql> CREATE TABLE t1 (id INT AUTO_INCREMENT PRIMARY KEY,c1 VARCHAR(255));
Query OK, 0 rows affected (0.06 sec)

mysql> CREATE TABLE t2 ( id INT, c2 VARCHAR(255));
Query OK, 0 rows affected (0.11 sec)

mysql> INSERT INTO t1 (c1) VALUES ('r'), ('rr'), ('rrr'), ('rrrr');
Query OK, 4 rows affected (0.00 sec)
Records: 4 Duplicates: 0 Warnings: 0

mysql> SELECT * FROM t1;
+----+------+
| id | c1 |
+----+------+
| 1 | r |
| 2 | rr |
| 3 | rrr |
| 4 | rrrr |
+----+------+
4 rows in set (0.00 sec)

mysql> SELECT * FROM t1 INTO OUTFILE '/tmp/t2.txt' FIELDS ENCLOSED BY 'r' ;
Query OK, 4 rows affected (0.00 sec)

mysql> LOAD DATA LOCAL INFILE '/tmp/t2.txt' INTO TABLE t2 FIELDS ENCLOSED BY 'r';
Query OK, 4 rows affected (0.00 sec)
Records: 4 Deleted: 0 Skipped: 0 Warnings: 0

mysql> select * from t2;
+------+------+
| id | c2 |
+------+------+
|1 |
| 2 |
| 3 |
| 4 |
+------+------+
4 rows in set (0.00 sec)

```
### 4. What is your TiDB version? (Required)

```sql
| Release Version: v5.4.0
Edition: Community
Git Commit Hash: 55f3b24c1c9f506bd652ef1d162283541e428872
Git Branch: heads/refs/tags/v5.4.0
UTC Build Time: 2022-01-25 08:41:05
GoVersion: go1.16.4
Race Enabled: false
TiKV Min Version: v3.0.0-60965b006877ca7234adaced7890d7b029ed1306
Check Table Before Drop: false |

```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.