загрузить данные в инфильском порядке построчно

Я 🙂
Мне нужно вставить 13500 строк и +500 столбцов из CSV.
Итак, я использую данные загрузки и все работает.

Но мне нужен точно такой же порядок в моей базе данных MySQL и моем Csv.

На самом деле, например, 1000 строк CSV может быть на 800 месте в моей базе

Мне нужно что-то вроде «Order by column1», но я не нахожу подсказку.

Спасибо за помощь

PS: у меня есть 2 основных ключа (ссылка на продукты), и они не в математическом порядке (например, 1, 8, 4 и т. Д.)

РЕДАКТИРОВАТЬ: мой код

$dataload = 'LOAD DATA LOCAL INFILE "'.__FILE__.'../../../../bo/csv/'.$nomfichier.'"REPLACE
INTO TABLE gc_csv CHARACTER SET "latin1"FIELDS TERMINATED BY "\t"IGNORE 1 LINES
';

Я просто беру csv и использую локальные данные вместе с ним … И порядок не совсем соблюдается, я не знаю почему …

Мой дизайн стола

CREATE TABLE `csv` (
`example` int(20) unsigned NOT NULL,
`example` int(15) unsigned NOT NULL,
`example` varchar(10) default NULL,
[...]
`example` varchar(4) default NULL,
PRIMARY KEY  (`RefCatSYS`,`IdProduit`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

1

Решение

Добавьте столбец auto_increment в вашу таблицу, используя DEFAULT NULL. Когда вы загружаете данные с помощью LOAD DATA INFILE, для столбца не будет никакого значения, и ему будет присвоен автоматически сгенерированный идентификатор. Выберите данные, упорядоченные по столбцу.

kostja@annie:~$ sudo cat  /var/lib/mysql/test/foo.csv
10
9
8
7
6
5
4
3
2
1
mysql> create table tmp (example int primary key, id int unique auto_increment default null);
Query OK, 0 rows affected (0.11 sec)
mysql> load data infile "foo.csv" into table tmp;
Query OK, 10 rows affected, 10 warnings (0.03 sec)
Records: 10  Deleted: 0  Skipped: 0  Warnings: 10
mysql> select * from tmp;
+---------+----+
| example | id |
+---------+----+
|      10 |  1 |
|       9 |  2 |
|       8 |  3 |
|       7 |  4 |
|       6 |  5 |
|       5 |  6 |
|       4 |  7 |
|       3 |  8 |
|       2 |  9 |
|       1 | 10 |
+---------+----+
10 rows in set (0.00 sec)
1

Другие решения

Таблицы в реляционных базах данных являются неупорядоченными коллекциями записей. Вы можете получить строки в определенном порядке при выполнении запроса с помощью SORT BY, Если запрос не содержит SORT BY предложение, сервер возвращает строки в том порядке, в котором они находятся на носителе данных. Этот порядок иногда изменяется при обновлении записей. Вы никогда не должны полагаться на это и всегда использовать SORT BY (и индексы), чтобы получить определенный порядок строк в наборе результатов.

LOAD DATA INFILE читает строки из файла CSV и вставляет их в том же порядке, в котором они находятся в файле. Помимо установки значения автоинкрементного столбца (если он есть в таблице), порядок строк в файле CSV не имеет значения.

0

Я должен решить проблему. На самом деле, WS отправляет мне CSV с несколькими парами из двух первичных ключей. На линиях 2365 и 9798 RefCatSYS и IdProduit одинаковы. Таким образом, загрузка данных infile ЗАМЕНИТЕ строку 2365 на 9798, и это изменит порядок.

Я прошу их прислать 3-й и УНИКАЛЬНЫЙ первичный ключ

Спасибо за вашу помощь, и извините за нарушение.

0
По вопросам рекламы [email protected]