Я 🙂
Мне нужно вставить 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;
Добавьте столбец 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)
Таблицы в реляционных базах данных являются неупорядоченными коллекциями записей. Вы можете получить строки в определенном порядке при выполнении запроса с помощью SORT BY
, Если запрос не содержит SORT BY
предложение, сервер возвращает строки в том порядке, в котором они находятся на носителе данных. Этот порядок иногда изменяется при обновлении записей. Вы никогда не должны полагаться на это и всегда использовать SORT BY
(и индексы), чтобы получить определенный порядок строк в наборе результатов.
LOAD DATA INFILE
читает строки из файла CSV и вставляет их в том же порядке, в котором они находятся в файле. Помимо установки значения автоинкрементного столбца (если он есть в таблице), порядок строк в файле CSV не имеет значения.
Я должен решить проблему. На самом деле, WS отправляет мне CSV с несколькими парами из двух первичных ключей. На линиях 2365 и 9798 RefCatSYS и IdProduit одинаковы. Таким образом, загрузка данных infile ЗАМЕНИТЕ строку 2365 на 9798, и это изменит порядок.
Я прошу их прислать 3-й и УНИКАЛЬНЫЙ первичный ключ
Спасибо за вашу помощь, и извините за нарушение.