#mysql #sql #json #mysql-shell
Вопрос:
У меня есть файл JSON, который выглядит так
{
"msb": [
{
"ville": "Le Mans",
"pays": "FRANCE",
"debutMatch": "2021-03-16T20:00:00 02:00",
"dateFin": "2021-03-16T22:00:00 02:00",
"meta": {
"cree": "2021-03-10T16:22:36.223 01:00",
"modofie": "2021-03-12T16:29:25.223 01:00"
},
"etat": "public",
"titre": "MSB "Orléans" - 16 mars 2021",
"url": "https://msb.fr/index.php/component/content/article/114-competitions/jeep-elite/5107-msb-lyon-villeurbanne-105-96-ap?Itemid=101",
"nomOrganisation": "le-mans-sarthe-basket"
},
{
"ville": "Le Mans",
"pays": "FRANCE",
"debutMatch": "2021-03-16T20:00:00 02:00",
"dateFin": "2021-03-16T22:00:00 02:00",
"meta": {
"cree": "2021-03-10T16:22:36.223 01:00",
"modofie": "2021-03-12T16:29:25.223 01:00"
},
"etat": "public",
"titre": "MSB "Boulazac" - 06 avril 2021",
"url": "https://msb.fr",
"nomOrganisation": "le-mans-sarthe-basket"
},
{
"ville": "Le Mans",
"pays": "FRANCE",
"debutMatch": "2021-04-06T20:00:00 02:00",
"dateFin": "2021-04-06T22:00:00 02:00",
"logo": {
"logo": "logo_msb_180.png",
"url": "https://msb.fr/images/teams/logo/logo_msb_180.png"
},
"meta": {
"cree": "2021-03-10T16:22:36.223 01:00",
"modofie": "2021-03-12T16:29:25.223 01:00"
},
"etat": "public",
"titre": "MSB "Orléans" - 06 avril 2021",
"url": "https://msb.fr",
"nomOrganisation": "le-mans-sarthe-basket"
},
{
"ville": "Le Mans",
"pays": "FRANCE",
"debutMatch": "2021-03-20T20:00:00 02:00",
"dateFin": "2021-03-20T22:00:00 02:00",
"meta": {
"cree": "2021-03-15T16:22:36.223 01:00",
"modofie": "2021-03-17T16:29:25.223 01:00"
},
"etat": "public",
"titre": "MSB "Orléans" - 20 mars 2021",
"url": "https://msb.fr",
"nomOrganisation": "le-mans-sarthe-basket"
}
],
"page_total": {
"pageZ": 42,
"Total_compte": 215,
"pageI": 1,
"pageT": 6,
"numeroIdentifiant": "164784656259969"
}
}
Как конвертировать вышеуказанный файл в SQL с помощью оболочки mysql
Я попробовал несколько команд для импорта своего файла :
Сценарий создания таблицы :
CREATE DATABASE database_name;
CREATE TABLE joomla.table_name (
doc JSON,
id INTEGER AUTO_INCREMENT PRIMARY KEY
) CHARSET utf8mb4 ENGINE=InnoDB;
Подключение к mysqlx
mysqlsh --mysqlx -u root -h localhost -P 33060 -p
password : 1234
Изменить схему по умолчанию
shell.connect( {scheme:'database_name', user:'user', host:'localhost', port:33060} )
Команда для импорта файла json в таблицу имя_таблицы
util.importJson("/test.json", {schema: "database_name", table: "table_name", tableColumn: "doc"});
Мы хотели бы иметь в нашей базе данных следующий результат
CREATE TABLE IF NOT EXISTS table_name(
`msb_ville` VARCHAR(7) CHARACTER SET utf8,
`msb_pays` VARCHAR(6) CHARACTER SET utf8,
`msb_debutMatch` VARCHAR(25) CHARACTER SET utf8,
`msb_dateFin` VARCHAR(25) CHARACTER SET utf8,
`msb_meta_cree` VARCHAR(29) CHARACTER SET utf8,
`msb_meta_modofie` VARCHAR(29) CHARACTER SET utf8,
`msb_etat` VARCHAR(6) CHARACTER SET utf8,
`msb_titre` VARCHAR(30) CHARACTER SET utf8,
`msb_url` VARCHAR(126) CHARACTER SET utf8,
`msb_nomOrganisation` VARCHAR(21) CHARACTER SET utf8,
`msb_logo_logo` VARCHAR(16) CHARACTER SET utf8,
`msb_logo_url` VARCHAR(49) CHARACTER SET utf8,
`page_total_pageZ` INT,
`page_total_Total_compte` INT,
`page_total_pageI` INT,
`page_total_pageT` INT,
`page_total_numeroIdentifiant` BIGINT
);
INSERT INTO test VALUES
('Le Mans','FRANCE','2021-03-16T20:00:00 02:00','2021-03-16T22:00:00 02:00','2021-03-10T16:22:36.223 01:00','2021-03-12T16:29:25.223 01:00',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
('Le Mans','FRANCE','2021-03-16T20:00:00 02:00','2021-03-16T22:00:00 02:00',NULL,NULL,'public','MSB "Orléans" - 16 mars 2021','https://msb.fr/index.php/component/content/article/114-competitions/jeep-elite/5107-msb-lyon-villeurbanne-105-96-ap?Itemid=101','le-mans-sarthe-basket',NULL,NULL,NULL,NULL,NULL,NULL,NULL),
('Le Mans','FRANCE','2021-03-16T20:00:00 02:00','2021-03-16T22:00:00 02:00','2021-03-10T16:22:36.223 01:00','2021-03-12T16:29:25.223 01:00',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
('Le Mans','FRANCE','2021-03-16T20:00:00 02:00','2021-03-16T22:00:00 02:00',NULL,NULL,'public','MSB "Boulazac" - 06 avril 2021','https://msb.fr','le-mans-sarthe-basket',NULL,NULL,NULL,NULL,NULL,NULL,NULL),
('Le Mans','FRANCE','2021-04-06T20:00:00 02:00','2021-04-06T22:00:00 02:00',NULL,NULL,NULL,NULL,NULL,NULL,'logo_msb_180.png','https://msb.fr/images/teams/logo/logo_msb_180.png',NULL,NULL,NULL,NULL,NULL),
('Le Mans','FRANCE','2021-04-06T20:00:00 02:00','2021-04-06T22:00:00 02:00','2021-03-10T16:22:36.223 01:00','2021-03-12T16:29:25.223 01:00',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
('Le Mans','FRANCE','2021-04-06T20:00:00 02:00','2021-04-06T22:00:00 02:00',NULL,NULL,'public','MSB "Orléans" - 06 avril 2021','https://msb.fr','le-mans-sarthe-basket',NULL,NULL,NULL,NULL,NULL,NULL,NULL),
('Le Mans','FRANCE','2021-03-20T20:00:00 02:00','2021-03-20T22:00:00 02:00','2021-03-15T16:22:36.223 01:00','2021-03-17T16:29:25.223 01:00',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
('Le Mans','FRANCE','2021-03-20T20:00:00 02:00','2021-03-20T22:00:00 02:00',NULL,NULL,'public','MSB "Orléans" - 20 mars 2021','https://msb.fr','le-mans-sarthe-basket',NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,42,215,1,6,164784656259969);