$config = [
'host' => '192.168.1.1',
'port' => '8123',
'username' => 'default',
'password' => '',
'https' => true
];
$db = new ClickHouseDB\Client($config);
$db->database('default');
$db->setTimeout(1.5); // 1 second , support only Int value
$db->setTimeout(10); // 10 seconds
$db->setConnectTimeOut(5); // 5 seconds
$db->ping(true); // if can`t connect throw exception
require 'd:/dev/vendor/autoload.php';
$settings = [
'host' => '93.93.xxx.xxx',
'port' => '8123',
'username' => 'default',
'password' => 'UFntdJye',
'https' => false
];
$db = new ClickHouseDB\Client($settings);
$db->database('default');
$db->setTimeout(2); // 2 секунды
$db->setConnectTimeOut(10); // 10 секунд
if (!$db->ping(true)) {
echo 'Error connect';
}
print_r($db->showTables());
Сама по себе ошибка - тупее не придумаешь.
SET @json = CONVERT(LOAD_FILE('/var/lib/mysql-files/myfile.json') using utf8mb4);
REPLACE INTO test (name, city, kurs)
SELECT
JSON_VALUE(@json, '$.name') as name,
JSON_VALUE(@json, '$.city') as city,
JSON_VALUE(@json, '$.kurs') as kurs
FROM JSON_TABLE(@json,'$[*]' COLUMNS (data JSON PATH '$')) jsontable
<?php
$connection = mysqli_connect("localhost",".............","..........","...........");
if(!$connection){ // проверка правильности подключения
echo 'Ошибка соединения: ' . mysqli_connect_error() . '<br>';
echo 'Код ошибки: ' . mysqli_connect_errno();
}else{ // подключение успешно установлено
// текст SQL запроса, который будет передан базе
$query = "CREATE TABLE test (name VARCHAR(255),
position VARCHAR(255),
city VARCHAR(255),
postcode INT,
entered_at DATE,
income INT) DEFAULT CHARSET UTF8MB4;";
$result = mysqli_query($connection, $query);
$query = "
INSERT INTO test (name, position, city, postcode, entered_at, income)
SELECT data ->> '$[0]' name,
data ->> '$[1]' position,
data ->> '$[2]' city,
data ->> '$[3]' postcode,
STR_TO_DATE(data ->> '$[4]', '%Y\/%m\/%d') entered_at,
REPLACE(SUBSTRING(data ->> '$[5]' FROM 2), ',', '') income
FROM JSON_TABLE((CONVERT(LOAD_FILE('/var/lib/mysql-files/myfile.json') using utf8mb4)),
'$.data[*]' COLUMNS (data JSON PATH '$')) jsontable
";
$result = mysqli_query($connection, $query);
if(!$result){ // запрос завершился ошибкой
echo 'Ошибка запроса: ' . mysqli_error($connection) . '<br>';
echo 'Код ошибки: ' . mysqli_errno($connection);
}else{ // запрос успешно выполнился
while($row = $result->fetch_assoc()){
// обрабатываем полученные данные
}
}
// закрываем соединение с базой
mysqli_close($connection);
}
?>
[{"name":"ivan","date":"2022-04-14T10:19:43","kurs":"1"},{"name":"lena","date":"2022-04-10T10:22:41","kurs":"5"},{"name":"misha","date":"2022-04-11T10:11:22","kurs":"3"}]
<?php
$connection = mysqli_connect("localhost",".............","..........","...........");
if(!$connection){ // проверка правильности подключения
echo 'Ошибка соединения: ' . mysqli_connect_error() . '<br>';
echo 'Код ошибки: ' . mysqli_connect_errno();
}else{ // подключение успешно установлено
// текст SQL запроса, который будет передан базе
$query = "CREATE TABLE test (name VARCHAR(255),
position VARCHAR(255),
city VARCHAR(255),
postcode INT,
entered_at DATE,
income INT);";
$result = mysqli_query($connection, $query);
$query = "create table jsontable( data json )";
$result = mysqli_query($connection, $query);
$query = "LOAD DATA INFILE '/var/lib/mysql-files/myfile.json' INTO TABLE jsontable";
$result = mysqli_query($connection, $query);
if(!$result){ // запрос завершился ошибкой
echo 'Ошибка запроса: ' . mysqli_error($connection) . '<br>';
echo 'Код ошибки: ' . mysqli_errno($connection);
}else{ // запрос успешно выполнился
while($row = $result->fetch_assoc()){
// обрабатываем полученные данные
}
}
// закрываем соединение с базой
mysqli_close($connection);
}
?>
{
"data": [
[
"Tiger Nixon",
"System Architect",
"Edinburgh",
"5421",
"2011/04/25",
"$320,800"
],
[
"Garrett Winters",
"Accountant",
"Tokyo",
"8422",
"2011/07/25",
"$170,750"
],
[
"Ashton Cox",
"Junior Technical Author",
"San Francisco",
"1562",
"2009/01/12",
"$86,000"
],
[
"Cedric Kelly",
"Senior Javascript Developer",
"Edinburgh",
"6224",
"2012/03/29",
"$433,060"
],
[
"Airi Satou",
"Accountant",
"Tokyo",
"5407",
"2008/11/28",
"$162,700"
],
[
"Brielle Williamson",
"Integration Specialist",
"New York",
"4804",
"2012/12/02",
"$372,000"
],
[
"Herrod Chandler",
"Sales Assistant",
"San Francisco",
"9608",
"2012/08/06",
"$137,500"
],
[
"Rhona Davidson",
"Integration Specialist",
"Tokyo",
"6200",
"2010/10/14",
"$327,900"
],
[
"Colleen Hurst",
"Javascript Developer",
"San Francisco",
"2360",
"2009/09/15",
"$205,500"
],
[
"Sonya Frost",
"Software Engineer",
"Edinburgh",
"1667",
"2008/12/13",
"$103,600"
],
[
"Jena Gaines",
"Office Manager",
"London",
"3814",
"2008/12/19",
"$90,560"
],
[
"Quinn Flynn",
"Support Lead",
"Edinburgh",
"9497",
"2013/03/03",
"$342,000"
],
[
"Charde Marshall",
"Regional Director",
"San Francisco",
"6741",
"2008/10/16",
"$470,600"
],
[
"Haley Kennedy",
"Senior Marketing Designer",
"London",
"3597",
"2012/12/18",
"$313,500"
],
[
"Tatyana Fitzpatrick",
"Regional Director",
"London",
"1965",
"2010/03/17",
"$385,750"
],
[
"Michael Silva",
"Marketing Designer",
"London",
"1581",
"2012/11/27",
"$198,500"
],
[
"Paul Byrd",
"Chief Financial Officer (CFO)",
"New York",
"3059",
"2010/06/09",
"$725,000"
],
[
"Gloria Little",
"Systems Administrator",
"New York",
"1721",
"2009/04/10",
"$237,500"
],
[
"Bradley Greer",
"Software Engineer",
"London",
"2558",
"2012/10/13",
"$132,000"
],
[
"Dai Rios",
"Personnel Lead",
"Edinburgh",
"2290",
"2012/09/26",
"$217,500"
],
[
"Jenette Caldwell",
"Development Lead",
"New York",
"1937",
"2011/09/03",
"$345,000"
],
[
"Yuri Berry",
"Chief Marketing Officer (CMO)",
"New York",
"6154",
"2009/06/25",
"$675,000"
],
[
"Caesar Vance",
"Pre-Sales Support",
"New York",
"8330",
"2011/12/12",
"$106,450"
],
[
"Doris Wilder",
"Sales Assistant",
"Sydney",
"3023",
"2010/09/20",
"$85,600"
],
[
"Angelica Ramos",
"Chief Executive Officer (CEO)",
"London",
"5797",
"2009/10/09",
"$1,200,000"
],
[
"Gavin Joyce",
"Developer",
"Edinburgh",
"8822",
"2010/12/22",
"$92,575"
],
[
"Jennifer Chang",
"Regional Director",
"Singapore",
"9239",
"2010/11/14",
"$357,650"
],
[
"Brenden Wagner",
"Software Engineer",
"San Francisco",
"1314",
"2011/06/07",
"$206,850"
],
[
"Fiona Green",
"Chief Operating Officer (COO)",
"San Francisco",
"2947",
"2010/03/11",
"$850,000"
],
[
"Shou Itou",
"Regional Marketing",
"Tokyo",
"8899",
"2011/08/14",
"$163,000"
],
[
"Michelle House",
"Integration Specialist",
"Sydney",
"2769",
"2011/06/02",
"$95,400"
],
[
"Suki Burks",
"Developer",
"London",
"6832",
"2009/10/22",
"$114,500"
],
[
"Prescott Bartlett",
"Technical Author",
"London",
"3606",
"2011/05/07",
"$145,000"
],
[
"Gavin Cortez",
"Team Leader",
"San Francisco",
"2860",
"2008/10/26",
"$235,500"
],
[
"Martena Mccray",
"Post-Sales support",
"Edinburgh",
"8240",
"2011/03/09",
"$324,050"
],
[
"Unity Butler",
"Marketing Designer",
"San Francisco",
"5384",
"2009/12/09",
"$85,675"
],
[
"Howard Hatfield",
"Office Manager",
"San Francisco",
"7031",
"2008/12/16",
"$164,500"
],
[
"Hope Fuentes",
"Secretary",
"San Francisco",
"6318",
"2010/02/12",
"$109,850"
],
[
"Vivian Harrell",
"Financial Controller",
"San Francisco",
"9422",
"2009/02/14",
"$452,500"
],
[
"Timothy Mooney",
"Office Manager",
"London",
"7580",
"2008/12/11",
"$136,200"
],
[
"Jackson Bradshaw",
"Director",
"New York",
"1042",
"2008/09/26",
"$645,750"
],
[
"Olivia Liang",
"Support Engineer",
"Singapore",
"2120",
"2011/02/03",
"$234,500"
],
[
"Bruno Nash",
"Software Engineer",
"London",
"6222",
"2011/05/03",
"$163,500"
],
[
"Sakura Yamamoto",
"Support Engineer",
"Tokyo",
"9383",
"2009/08/19",
"$139,575"
],
[
"Thor Walton",
"Developer",
"New York",
"8327",
"2013/08/11",
"$98,540"
],
[
"Finn Camacho",
"Support Engineer",
"San Francisco",
"2927",
"2009/07/07",
"$87,500"
],
[
"Serge Baldwin",
"Data Coordinator",
"Singapore",
"8352",
"2012/04/09",
"$138,575"
],
[
"Zenaida Frank",
"Software Engineer",
"New York",
"7439",
"2010/01/04",
"$125,250"
],
[
"Zorita Serrano",
"Software Engineer",
"San Francisco",
"4389",
"2012/06/01",
"$115,000"
],
[
"Jennifer Acosta",
"Junior Javascript Developer",
"Edinburgh",
"3431",
"2013/02/01",
"$75,650"
],
[
"Cara Stevens",
"Sales Assistant",
"New York",
"3990",
"2011/12/06",
"$145,600"
],
[
"Hermione Butler",
"Regional Director",
"London",
"1016",
"2011/03/21",
"$356,250"
],
[
"Lael Greer",
"Systems Administrator",
"London",
"6733",
"2009/02/27",
"$103,500"
],
[
"Jonas Alexander",
"Developer",
"San Francisco",
"8196",
"2010/07/14",
"$86,500"
],
[
"Shad Decker",
"Regional Director",
"Edinburgh",
"6373",
"2008/11/13",
"$183,000"
],
[
"Michael Bruce",
"Javascript Developer",
"Singapore",
"5384",
"2011/06/27",
"$183,000"
],
[
"Donna Snider",
"Customer Support",
"New York",
"4226",
"2011/01/25",
"$112,000"
]
]
}
$query = "LOAD DATA INFILE '/var/lib/mysql-files/myfile.json' INTO TABLE jsontable";
FROM JSON_TABLE(@data, '$.data[*]' COLUMNS (data JSON PATH '$')) jsontable
{
"data": [
[
"Tiger Nixon",
"System Architect",
"Edinburgh",
"5421",
"2011/04/25",
"$320,800"
]
]
}
[{"name":"ivan","date":"2022-04-14T10:19:43","kurs":"1"},{"name":"lena","date":"2022-04-10T10:22:41","kurs":"5"},{"name":"misha","date":"2022-04-11T10:11:22","kurs":"3"}]
у тебя правильно организована транзакция, одна на все инсерты
foreach($Data as $items)
{
$query = "INSERT INTO employee (ssn,name,phone) values ($items['ssn'],$items['name'],$items['phone'])";
};
mysql_connect(....) ;
mysql_select_db("mytable");
$Data = file_get_contents("data.json");
$object = json_decode($Data);
/* Начало транзакции */
$mysqli->begin_transaction();
try {
foreach($Data as $items)
{
$query = "INSERT INTO employee (ssn,name,phone) values ($items['ssn'],$items['name'],$items['phone'])";
};
$mysqli->commit();
} catch (mysqli_sql_exception $exception) {
$mysqli->rollback();
throw $exception;
}
Не совсем понимаю, что не так. Сейчас я вставляю в mysql миллион записей за секунду,
Но вообще перешел на кликхаус, и так же за секунду записываю миллион, кроме того они сами пишут, что лучше писать реже, но большими данными, хоть миллион, хоть два за раз.
Но все это я инициирую на php и в рамках теста - как все устроено.
Моя задача получать данные, записывать, но делать это гарантированно и выдавать ответы отправителю, и конечно же выполнять больше вставок за момент времени.
Допустим, 20 отправителей данных прислали в течение минуты данные, я должен записать их максимально быстро, и скрипт записи не должен спотыкаться и выполняться последовательно, тормозя остальных.