Тек қана белгілі кестелерді алу үшін үлкен .sql файлында SQL операторларын алу/бөлісу қалай?

Менде 22 Гбайт .sql файлы (100+ кесте) бар және мен олардың 5-і ғана керек. Мен барлық Oracle құралдарын қолданамын, бірақ олардың ешқайсысы тек нақты кестелерді шығара алмайды.

Тек нақты кестелерді шығарудың кез-келген жолы бар ма?

3
Дыбыс жақсы, бірақ лас - идея. Мен кесте атауын және мәлімдемелер құрылымын білмеймін. Яғни, оны 22 ГБ файлға «қарау» мүмкін емес
қосылды автор Sliq, көзі
Мен бір рет жүздеген жақсы файлдарға бөлуге арналған кіші (java) қосымшаны жасадым. Сондықтан алға жылжытыңыз.
қосылды автор Joop Eggen, көзі
Linux tail астында. Бірақ сіз бірнеше бөлікке бөле отырып, 100 кб-ге бөлініп бастаңыз және оны жақсарта аласыз.
қосылды автор Joop Eggen, көзі
Linux tail астында. Бірақ сіз бірнеше бөлікке бөле отырып, 100 кб-ге бөлініп бастаңыз және оны жақсарта аласыз.
қосылды автор Joop Eggen, көзі

6 жауаптар

Егер сіз файлды mysqldump арқылы құрсаңыз, CREATE TABLE және INSERT мәлімдемелерін шығарып алу үшін мәтіндік қызметтік бағдарламаларды пайдалануға болады деп ойлаймын.

Атап айтқанда, сіз барлық sed мекенжайларын пайдалана аласыз. екі қалыпты өрнектер арасындағы жолдар. Ол 22 гиг файлымен қиындықтар болмайды.

Мен құм жәшіктерінің дерекқорын (SO бойынша сұрақтарға жауап беру үшін пайдаланатын кішкентай дерекқор) сынап тастадым.

Мұнда орнатылған MySQL нұсқасында, осы бір-лайнер CREATE кесте мәлімдемесін және DEP_FACULTY кестесіне арналған INSERT мәлімдемелерін шығарады.

$ sed -n -e '/^CREATE TABLE `DEP_FACULTY`/,/UNLOCK TABLES/p' mysql.sql > output.file

Бұл қалыпты өрнек CREATE TABLE операторының басын анықтайды.

  • /^ КЕҢЕСТІ ТАПСЫРУ DEP_FACULTY /

CREATE TABLE операторлары әрдайым дереу INSERT мәлімдемелерінде көрінеді. Сондықтан біз жай ғана INSERT мәлімдемелерінің соңын анықтайтын тұрақты өрнекті қажет етеді.

  • /UNLOCK TABLES/

mysqldump сіздің нұсқаңыз бірдей шығарылымды шығарса, сіз жай ғана кесте атауын ауыстыра аласыз, шығу файлының атауын маңызды нәрсеге өзгертуіңізге болады және кофе ішу керек.

7
қосылды
Керемет жауап! Рахмет;)
қосылды автор Sliq, көзі

Егер сіз файлды mysqldump арқылы құрсаңыз, CREATE TABLE және INSERT мәлімдемелерін шығарып алу үшін мәтіндік қызметтік бағдарламаларды пайдалануға болады деп ойлаймын.

Атап айтқанда, сіз барлық sed мекенжайларын пайдалана аласыз. екі қалыпты өрнектер арасындағы жолдар. Ол 22 гиг файлымен қиындықтар болмайды.

Мен құм жәшіктерінің дерекқорын (SO бойынша сұрақтарға жауап беру үшін пайдаланатын кішкентай дерекқор) сынап тастадым.

Мұнда орнатылған MySQL нұсқасында, осы бір-лайнер CREATE кесте мәлімдемесін және DEP_FACULTY кестесіне арналған INSERT мәлімдемелерін шығарады.

$ sed -n -e '/^CREATE TABLE `DEP_FACULTY`/,/UNLOCK TABLES/p' mysql.sql > output.file

Бұл қалыпты өрнек CREATE TABLE операторының басын анықтайды.

  • /^ КЕҢЕСТІ ТАПСЫРУ DEP_FACULTY /

CREATE TABLE операторлары әрдайым дереу INSERT мәлімдемелерінде көрінеді. Сондықтан біз жай ғана INSERT мәлімдемелерінің соңын анықтайтын тұрақты өрнекті қажет етеді.

  • /UNLOCK TABLES/

mysqldump сіздің нұсқаңыз бірдей шығарылымды шығарса, сіз жай ғана кесте атауын ауыстыра аласыз, шығу файлының атауын маңызды нәрсеге өзгертуіңізге болады және кофе ішу керек.

7
қосылды
Керемет жауап! Рахмет;)
қосылды автор Sliq, көзі

Мен өте үлкен сценарийде бар әрбір кесте үшін бір .sql жасайтын өте қызықты сценарийге тап болдым .sql: MYSQLDUMPSPLITTER.sh

http: //kedar.nitty-witty .com/blog/mydumpsplitter-extract-tables-from-mysql-dump-shell-скрипті

Егер сілтеме 404 болса, мұнда қараңыз.

4
қосылды

Мен өте үлкен сценарийде бар әрбір кесте үшін бір .sql жасайтын өте қызықты сценарийге тап болдым .sql: MYSQLDUMPSPLITTER.sh

http: //kedar.nitty-witty .com/blog/mydumpsplitter-extract-tables-from-mysql-dump-shell-скрипті

Егер сілтеме 404 болса, мұнда қараңыз.

4
қосылды

Егер сіз қоқысты жасасаңыз, онда сіз қайтадан оралып, жаңа кесте жасауыңыз керек.

mysqldump - кестелер table1 table2 table3

Егер сіз бүкіл деректер базасын толығымен жүктемесеңіз, жоғарыда көрсетілгенді жасаңыз, содан кейін оны өшіріңіз.

0
қосылды

Егер сіз қоқысты жасасаңыз, онда сіз қайтадан оралып, жаңа кесте жасауыңыз керек.

mysqldump - кестелер table1 table2 table3

Егер сіз бүкіл деректер базасын толығымен жүктемесеңіз, жоғарыда көрсетілгенді жасаңыз, содан кейін оны өшіріңіз.

0
қосылды