Thread View: pl.comp.bazy-danych
10 messages
10 total messages
Started by Borneq
Fri, 20 Jan 2017 10:02
Szybkie wypełnianie zerami tabeli
Author: Borneq
Date: Fri, 20 Jan 2017 10:02
Date: Fri, 20 Jan 2017 10:02
23 lines
1168 bytes
1168 bytes
w tabeli może być kilka rekordów typu 567, 1,2 753, 0,1 gdzie 567 i 753 to klucz Czy dało by radę szybko przy pomocy polecenia SQL zrobić Insert ingore, tak że powstało by 0,0,0 1,0,0 2,0,0 3,0,0 .... 566, 0,0 567, 1,2 568, 0,0 .... 753, 0,1 ... 100000, 0,0 Bez 100 tysięcy wołań w pętli "Insert ..Ingore" ?
Re: Szybkie wypełnianie zerami tabeli
Author: Paweł Broda
Date: Fri, 20 Jan 2017 10:05
Date: Fri, 20 Jan 2017 10:05
1 lines
1256 bytes
1256 bytes
a jaka to baza?
Re: Szybkie wypełnianie zerami tabeli
Author: Borneq
Date: Fri, 20 Jan 2017 10:08
Date: Fri, 20 Jan 2017 10:08
4 lines
1039 bytes
1039 bytes
W dniu 20.01.2017 o 11:05, Paweł Broda pisze: > a jaka to baza? > MySQL
Re: Szybkie wypełnianie zerami tabeli
Author: Paweł Broda
Date: Fri, 20 Jan 2017 10:27
Date: Fri, 20 Jan 2017 10:27
9 lines
1563 bytes
1563 bytes
spróbuj zmergować to zapytanie do twojej tabeli: WITH RECURSIVE x AS ( SELECT 1 AS a, 0 AS b, 0 AS c UNION ALL SELECT 1+a, b, c FROM x WHERE n<100000 ) SELECT * FROM x
Re: Szybkie wypełnianie zerami tabeli
Author: Cezary Grądys
Date: Fri, 20 Jan 2017 10:47
Date: Fri, 20 Jan 2017 10:47
22 lines
1708 bytes
1708 bytes
W dniu 20.01.2017 o 11:27, Paweł Broda pisze: > WITH RECURSIVE x AS > ( > SELECT 1 AS a, 0 AS b, 0 AS c > UNION ALL > SELECT 1+a, b, c FROM x WHERE n<100000 > ) > SELECT * FROM x Tylko a, a nie n we WHERE! SELECT * FROM x; test=> WITH RECURSIVE x AS ( SELECT 1 AS a, 0 AS b, 0 AS c UNION ALL SELECT 1+a, b, c FROM x WHERE a<100000 ) SELECT * FROM x; Na postgresie działa
Re: Szybkie wypełnianie zerami tabeli
Author: Borneq
Date: Fri, 20 Jan 2017 10:55
Date: Fri, 20 Jan 2017 10:55
7 lines
1344 bytes
1344 bytes
W dniu 20.01.2017 o 11:27, Paweł Broda pisze: > spróbuj zmergować to zapytanie do twojej tabeli: zmergować? to coś innego niż zwykłe execute? Normalnie używam c++ connectora i sql::Statement-->execute(sql_statement); a tutaj mergowanie? z jakiegoś programu czy z kodu C++?
Re: Szybkie wypełnianie zerami tabeli
Author: Borneq
Date: Fri, 20 Jan 2017 11:03
Date: Fri, 20 Jan 2017 11:03
27 lines
1850 bytes
1850 bytes
W dniu 20.01.2017 o 11:47, Cezary Grądys pisze:
> SELECT * FROM x;
> test=> WITH RECURSIVE x AS
> (
> SELECT 1 AS a, 0 AS b, 0 AS c
> UNION ALL
> SELECT 1+a, b, c FROM x WHERE a<100000
> )
> SELECT * FROM x;
>
> Na postgresie działa
Tu mamy dwa selecty do sprawdzenia i polecenie? Jak się robi polecenie z
"test=>"
u mnie wygląda to tak:
MySqlDB db("127.0.0.1", "root", "rootpass", "bitcoin");
string stmt;
stmt += "test = > WITH RECURSIVE x AS\n";
stmt += "(\n";
stmt += "SELECT 1 AS a, 0 AS b, 0 AS c\n";
stmt += "UNION ALL\n";
stmt += "SELECT 1 + a, b, c FROM x WHERE a<100000\n";
stmt += ")\n";
db.execute(stmt);
i coś tu nie gra.
To jest procedura , jak się obsługuje odwrotnie od zwykłych statement?
Re: Szybkie wypełnianie zerami tabeli
Author: Borneq
Date: Fri, 20 Jan 2017 11:07
Date: Fri, 20 Jan 2017 11:07
11 lines
1511 bytes
1511 bytes
W dniu 20.01.2017 o 12:03, Borneq pisze: > i coś tu nie gra. > To jest procedura , jak się obsługuje odwrotnie od zwykłych statement? zobaczyć: https://dev.mysql.com/doc/connector-cpp/en/connector-cpp-tutorials-stored-routines-statements.html lub https://dev.mysql.com/doc/connector-cpp/en/connector-cpp-tutorials-stored-routines-prepared-statements.html ? to bardziej zaawansowane rzeczy
Re: Szybkie wypełnianie zerami tabeli
Author: Paweł Broda
Date: Fri, 20 Jan 2017 12:18
Date: Fri, 20 Jan 2017 12:18
41 lines
2687 bytes
2687 bytes
W dniu piątek, 20 stycznia 2017 12:03:13 UTC+1 użytkownik Borneq napisał:
> W dniu 20.01.2017 o 11:47, Cezary Grądys pisze:
> > SELECT * FROM x;
> > test=> WITH RECURSIVE x AS
> > (
> > SELECT 1 AS a, 0 AS b, 0 AS c
> > UNION ALL
> > SELECT 1+a, b, c FROM x WHERE a<100000
> > )
> > SELECT * FROM x;
> >
> > Na postgresie działa
>
> Tu mamy dwa selecty do sprawdzenia i polecenie? Jak się robi polecenie z
> "test=>"
> u mnie wygląda to tak:
> MySqlDB db("127.0.0.1", "root", "rootpass", "bitcoin");
> string stmt;
> stmt += "test = > WITH RECURSIVE x AS\n";
> stmt += "(\n";
> stmt += "SELECT 1 AS a, 0 AS b, 0 AS c\n";
> stmt += "UNION ALL\n";
> stmt += "SELECT 1 + a, b, c FROM x WHERE a<100000\n";
> stmt += ")\n";
> db.execute(stmt);
>
> i coś tu nie gra.
> To jest procedura , jak się obsługuje odwrotnie od zwykłych statement?
To jest jeden select.
W ANSI SQL (i np. w Oracle) jest polecenie SQL MERGE. Z tego co wyczytałem to MySQL tego nie obsługuje - ale możesz spróbować tak:
INSERT IGNORE INTO TwojaTabela (a, b, c)
WITH RECURSIVE x AS
(
SELECT 1 AS a, 0 AS b, 0 AS c
UNION ALL
SELECT 1+a, b, c FROM x WHERE a<100000
)
SELECT a, b, c FROM x
Re: Szybkie wypełnianie zerami tabeli
Author: Borneq
Date: Fri, 20 Jan 2017 12:44
Date: Fri, 20 Jan 2017 12:44
9 lines
1580 bytes
1580 bytes
W dniu 20.01.2017 o 13:18, Paweł Broda pisze: > INSERT IGNORE INTO TwojaTabela (a, b, c) > WITH RECURSIVE x AS wsadziłem do workbencha ale jest podkreślone With, na razie robię jedno wielkie zapytanie/polecenie w którym od razu jest tysiąc Mam włożyć 450 tys, po jednym to nie czekałem ale czas około 30 minut, po 100 - 30 sekund, po 1000 - 10 sekund - jest dobrze
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads