Чем открыть sql файл большого размера
Перейти к содержимому

Чем открыть sql файл большого размера

  • автор:

Подскажите, чем можно открыть большой дамп базы данных?

Если у кого есть опыт по работе с большими файлами, готов выслушать ваши советы. Заранее благодарен.

  • eTarget 2011:Панельная дискуссия «Стратегия и планирование рекламной кампании в интернете»
  • eTarget 2011: Круглый стол «Реклама в онлайн-видео»
  • Могут ли «плохие» входящие ссылки привести к ухудшению ранжирования?

На сайте с 10.04.2008
21 сентября 2010, 10:15

DyaDya:
Возникла следующая проблема. Есть старый бекап базы данных Mysql. Нужно его восстановить. Но при заливке dumper-ом, пишет, что

  • Во-первых, не понятно, как же тогда сделан бекап, если при восстановлении выкидывает такую ошибочку? Но сделать новый бекап возможности уже нет.
  • Во-вторых, файл весит более 150 мегов. Не знаю, чем бы его открыть, чтобы можно было комфортно с ним работать, вносить правки, удалять дубли и т.п. Пробовал несколькими текстовыми редакторами (Notepad, HomeSite), но все они жутко подвисают.

Если у кого есть опыт по работе с большими файлами, готов выслушать ваши советы. Заранее благодарен.

phpexperteditor либо бесплатный notepad++ хорошо такие файлы открывает вроде.

21 сентября 2010, 10:24
DyaDya:
Пробовал несколькими текстовыми редакторами (Notepad, HomeSite), но все они жутко подвисают.

Нотепад (родной виндовый) забыть как страшный сон! (я серьёзно). И использовать любой правильный блокнот (желательно с подсветкой синтаксиса и сворачиванием блоков)

Notepad++, AcelPad (с плагинами для кодеров), PsPad и мн других.

Но 150 метров.. не легко придётся 🙂

На сайте с 11.04.2007
21 сентября 2010, 10:31
SeoNizator:
Notepad++

пробую его, родименького. Но тоже, еле дышит(.

DyaDya добавил 21.09.2010 в 14:35

Подумываю снять с поля таблицы «Уникальный ключ», залить дамп в базу.

Потом выборку сделать и поудалять дубли.

На сайте с 25.05.2008
21 сентября 2010, 10:36

Может, попробовать очистить базу перед заливкой дампа? 🙂

Лог в помощь!
На сайте с 24.12.2007
21 сентября 2010, 10:37

DyaDya, обычно такая ошибка возникает при наличии нуля в автоинкрементном поле:

Я бы на вашем месте пробежался скриптом по этому файлу и заменил к чертям «INSERT INTO» на «INSERT IGNORE INTO». Хотя, зависит от того, что вам дальше делать с этим дампом. Если просто выдрать некоторые данные — по фигу, а вот если восстанавливать работоспособность сайта целиком — тогда могут грабли какие-нибудь вылезти.

На сайте с 11.04.2007
21 сентября 2010, 10:44
[umka:
]Может, попробовать очистить базу перед заливкой дампа?

В этом и прикол. Что дамп делается уже с дублями. Как такое выходит, не знаю.

В дампе, конечно же, есть перед каждой табличкой типа:

DROP TABLE IF EXISTS `имя таблицы`;

Поэтому дубли не из-за того, что она изначально не пустая). Пробовал уже, чистил. Не помогает).

На сайте с 06.05.2007
21 сентября 2010, 10:54
Но при заливке dumper-ом

1.дамп мог сделаться нормально, даже если нарушена целостность индексов.

ну или sypex этот налажал. Это же не программа из дистрибутива прошедшая контроль качества и разрабатываемая годами, а обычный пшп-скрипт украинских шабашников.

И сколько ж там дублей? Если достаточно много, то дело не в случайном сбое.

2.любой нормальный редактор БЕЗ раскраски. хоть и FAR старенький без плагинов.

Кнопка вызова админа ( )
На сайте с 25.11.2006
21 сентября 2010, 11:00

Я большие файлы открываю стареньким Bred 3.0.3E

Он махом работает с такими файлами.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/

На сайте с 11.04.2007
21 сентября 2010, 12:10
LEOnidUKG:
Я большие файлы открываю стареньким Bred 3.0.3E

Попробовал этот Бред, при попытке открыть файл пишет: «Недостаточно памяти для завершения операции.»

p.s. На всяк случай, оперативки 4 гига.

DyaDya добавил 21.09.2010 в 17:00

Удалось, доковыряться с Notepad++:

1. Старался делать меньше лишних движений). Нашёл табличку с дублями кеев. Снял с поля id автоинкремент и праймери кей

2. Затем спокойно залил базу.

3. Одним запросом нашёл все записи с одинаковыми id (получилось штук 9 всего). Пришлось их удалить нафиг.

4. Затем через пхпмайадмин спокойно добавил нужные автоинкремент и праймери кей на поле id. Всё прокатило и почти без потерь 😉

Но шустрого редактора для таких файлов так и не нашёл. Комп и хард, видимо, медленные).

DyaDya добавил 21.09.2010 в 21:15

Опана. Несмотря на то, что уже сделал. Решил запробовать AcelPad в действии. Отлично летает. Со 150 мегами легко работает. Тормозов не заметил. Респект за прогу.

p.s. только кодировку что-то не могу подобрать).

DyaDya добавил 21.09.2010 в 21:16

Надо будет статейку по этому поводу забацать.

DyaDya добавил 21.09.2010 в 21:20

Вопрос не в тему, кто подскажет? Почему свою мессагу я не могу отредактировать?

Как работать с файлом SQL объемом 20 ГБ?

У меня есть база данных одной компании, которую я скачала в инете. Она весит более 20 гб. В файле скрипты на языке sql.
Я хочу произвести поиск в этой базе по номеру телефону пользователей, используя Python. Например, если есть номер в базе, то вывести имя и адрес пользователя.

Чтобы это сделать, наверное, надо сначала выполнить sql команды, чтобы сгенерировалась сама база данных.

Написал такой скрипт:

spoiler

from mysql.connector import connect, Error # Open and parse the "par3.sql" file with open('part3.sql', 'r', encoding="utf-8") as f: sql_commands = f.read() print("Файл прочитан") try: with connect( host="localhost", user="root", password="password", database="database", ) as connection: print(connection) with connection.cursor() as cursor: cursor.execute(sql_commands) connection.commit() connection.close() except Error as e: print(e)

Проблема в том, что файл действительно большой и подключения разрывается. Как можно осуществить данную задачу? Есть какие-нибудь идеи?

  • Вопрос задан более года назад
  • 626 просмотров

7 комментариев

Простой 7 комментариев

iMedved2009

Дмитрий @iMedved2009
mysql -u root -ppassword databaseа тебе обязательно его всего загонять в память несчастного компухтера ??
если тебе только отдельные элементы то просто поищи номера телефонов.
ибо sql это просто текстовый файл.

ubirust @ubirust Автор вопроса

pfg21, мне нужно автоматизировать сбор имени и адреса пользователя. Сначала идёт ввод телефона, если есть такой номер, то выводится имя и адрес, они привязаны, как это стандартно делается (id, user_name, addres, phone_number и т.д.)

Что, всё это в одной таблице? Тогда можно прямо вычитывать и парсить блоки VALUES.

А если нет, то только восстанавливать БД.

mayton2019

mayton2019 @mayton2019

У меня есть база данных одной компании, которую я скачала в инете. Она весит более 20 гб

А ну дай ссылочку.

Adamos

Особенно забавно будет после этих мучений осознать, что в этой ворованной в интернете базе номера не нормализованы и искать произвольно набранный номер среди собранных с бору по сосенке строчек типа «+8 (4922 3-3-3333» средствами Питона просто бесполезно.

ubirust, если тебе просто выдернуть небольшое количество данных из sql, то я бы просто прошелся grep по файлу и пропарсил выхлоп.

Решения вопроса 1

trapwalker

Сергей П @trapwalker Куратор тега Python
Программист, энтузиаст

Вы выбрали плохой путь по ряду причин.
Во-первых, вы пытаетесь вычитать весь 20гб файл в оперативную память. Это будет долго, отожрёт кучу свопа и не факт. что завршится успешно.
Во-вторых, вы пытаетесь запустить весь SQL за один раз — это вы правильно поняли.ч то проблематично.
Ну а в-третьих.
В общем, следует глазами посмотреть в SQL и понять что там. Если там дамп БД, то сперва идут стейтменты для содания таблиц, индексов, хранимок, а потом уже операции вставки в эти таблицы.
Ваш файл называется «часть 3», так что, возможно, часть нужных стейтментов для создания структур просто оказались в других фвйлах.
Обычно кусок SQL, который создаст все таблицы, не так уж и велик по размеру. Можно открыть файлы с дампом текстовым редактором и вытащить оттуда куски SQL из начала с созданием структуры. Положить эти кусуи в отдельный файл. Иногда в SQL-файле с дампом лежит и команда создания базы, посмотрите внимательно.

Когда у вас операции вставки данных в БД в отдельном огромном файле, всё тсановится чуточку проще.
Если у вас задача одноразовая и нужно просто найти один номер и больше ничего, то можно просто воспользоваться командой grep на SQL файле. Она поищет нужный номер и покажет строчки, в которой он встретился. Параметры командной строки могут настроить выхлоп так, чтобы показывались несколько строчек. Это, возможно пригодится, если отдельные стейтменты со вставками занимают по много строк. Так можно быстро найти нужные данные не возясь с поднятием БД.

Если задача более-менее систематическая, то, конечно, лучше выполнить SQL и занести все данные в БД. Для этого имеет смысл воспользоваться стандартными утилитами, а не городить такой вот велосипед с квадратными колёсами.
Если описанные действия нужно проделывать в рамках какого-то более широкого автоматизированного процесса, а не одноразово руками, то можно тулзы для БД запускать и из питона, просто системным вызовом консольной команды.

Как просмотреть всё содержимое .sql файла в 1ГБ?

импортировать куда-нибудь, например в БД, и уже с помощью неё смотреть то, что нужно. А вы через блокнотик смотрите? 😀 Ну попробуйте notepad++, у меня спокойно открывает файлы весом 500мб.

4 фев 2013 в 13:12
lister в Totalcmd
4 фев 2013 в 13:13
Еще можно порезать на пару-тройку файлов приемлимого размера.
4 фев 2013 в 13:14

@lampa, проблема в том, что импортируется 3 таблицы из 6. Вот я хочу и заглянуть в сам файл, может там действительно 3 таблицы. Нотепад ошибку выбивает.

4 фев 2013 в 13:17
4 фев 2013 в 13:24

8 ответов 8

Сортировка: Сброс на вариант по умолчанию

Вы ведь не хотите просмотреть весь гигабайт данных, правда? То есть вам и не нужно открывать такой файл.

Вы скорее всего хотели запустить в файле поиск, правильно? Это можно сделать и не открывая файл редактором, для этого существуют более адекватные средства, например, grep .

Eсли вы хотите всего лишь узнать, сколько там таблиц, вам нужно что-то вроде

grep -i "CREATE TABLE" /path/to/sql 

(Чтобы посмотреть первые 100 строк и увидеть, как там описана первая таблица, используйте sed 100q /path/to/sql .)

Отслеживать
ответ дан 4 фев 2013 в 13:35
207k 29 29 золотых знаков 295 295 серебряных знаков 529 529 бронзовых знаков
что бы посмотреть первые сто строк, нужно использовать head -n 100.
4 фев 2013 в 13:53
сдается мне, что у ТС идет речь о windows 😉 а вообще линух не виснет на таких файлах 🙂
4 фев 2013 в 14:27
@KoVadim: sed 100q тоже работает, известная же идиома.
4 фев 2013 в 15:49

Встроенный просмотрщик в FAR открывает любые файлы моментально, так как он их не читает полностью при открытии, а считывает нужные части файла по мере просмотра.

Отслеживать
ответ дан 4 фев 2013 в 20:48
Mr Trololo Mr Trololo
401 2 2 серебряных знака 7 7 бронзовых знаков

Так нужно просто пользоваться правильными текстовыми редакторами! В свое время пользовался emeditor. 200-400 Мб открывал с пол пинка.

Но если по правильному, то такие файлы обычно смотрят в консоли с помощью less, grep и компании.

Отслеживать
ответ дан 4 фев 2013 в 13:18
112k 6 6 золотых знаков 94 94 серебряных знака 161 161 бронзовый знак
@KoVadim, как использовать то? less отклоняет
4 фев 2013 в 13:24
less /var/www/user1734_modal/data/www/montytool.com/bigdump.sql угловые скобки не нужны.
4 фев 2013 в 13:25
Отслеживать
ответ дан 4 фев 2013 в 13:19
Zhukov Roman Zhukov Roman
9,085 15 15 серебряных знаков 26 26 бронзовых знаков
@Zhukov Roman, как использовать то? less отклоняет
4 фев 2013 в 13:24
@Modal, поподробнее, как это less отклоняет? Что говорит?
4 фев 2013 в 17:51

Если дело происходит в Unix системе можно открыть из шелла выполнив

получите указанное количество строк текста из файла с начала. хотите с конца — замените head на tail

Отслеживать
371 1 1 золотой знак 5 5 серебряных знаков 13 13 бронзовых знаков
ответ дан 4 фев 2013 в 16:46
476 2 2 серебряных знака 11 11 бронзовых знаков

notepad++ спокойно открывает такие файлы

Отслеживать
ответ дан 4 фев 2013 в 13:29
134 9 9 бронзовых знаков
@levantez, нет. Пишет, что размер файла слишком большой для открытия.
4 фев 2013 в 13:31

В дополнение про FAR скажу, что mcedit из Midnight Commander работает аналогично. Последний раз большой дамп просматривал именно с его помощью.

Отслеживать
ответ дан 5 фев 2013 в 10:37
gorodezkiy gorodezkiy
331 2 2 серебряных знака 20 20 бронзовых знаков

Под какой платформой вы пытаетесь это сделать, Windows или Linux? В любом случае если вас интересует только просмотр, а не редактирования, лучше использовать просмотр а не редактирование. В windows в Total commander или Far В Linux mightnight commander. Ну или как советовали консольные средства поиска. findstr в windows grep в linux. Кстати в linux меня приятно удивил vim для редактирования больших файлов. Открыл файл в 400~ мб практически мгновенно. Так понимаю это связано с тем что он не пытается загрузить сразу всю информация в оперативную память, в отличии от большинства других текстовых редакторов.

Отслеживать
ответ дан 7 фев 2013 в 4:37
111 8 8 бронзовых знаков

  • файлы
  • sql
    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.5.3.8609

Файл с расширением .sql

Иконка формата файла sql

Файл SQL содержит команды на языке SQL (Structured Query Language). Это язык структурированных запросов, предназначенный для работы с данными в системе реляционных баз данных, например, MySQL. В файле перечислены SQL-запросы для выполнения определенных действий в базе данных: создание новых таблиц, удаление и добавление записей в таблицы, изменение структуры базы данных и т.д. Файлы SQL имеют простой текстовый формат и могут быть открыты в текстовом редакторе, к примеру, Notepad++.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *