2015-03-21 3 views
0

Я пытаюсь разбить файл, созданный mydumper, на один для каждого оператора SQL. Конечный разделитель; но он многострочный.Разделить файл mydumper sql на отдельные файлы sql

Я думал, что это с этой командной строки:

/bin/awk 'BEGIN{RS=";"}{x="export."++i;}{print $0";"> x".sql";}' 

но полученные файлы должным образом не прекращается. Мои образцы, которые были намного меньше линий, работали нормально. Поэтому мой вопрос заключается в том, как разбить файл SQL на полные строки?

В моих образцовых файлах я повторил этот sql, и все сработало нормально.

insert into table (field) values 
    ('asdf'), 
    ('asdf'), 
    ('asdf'), 
    ('asdf'), 
    ('asdf'), 
    ('asdf'), 
    ('asdf'), 
    ('asdf'), 
    ('asdf'), 
    ('asdf'), 
    ('asdf'), 
    ('asdf'), 
    ('asdf'), 
    ('end'); 

Есть ли у awk какой-то рекорд длины?

[[email protected] TEST]# wc -l *.sql 
10364 export.66.sql 
10304 export.67.sql 
10209 export.68.sql 
10208 export.69.sql 
10582 export.6.sql 
10207 export.70.sql 
10207 export.71.sql 
9979 export.72.sql 
9918 export.73.sql 
9918 export.74.sql 
9926 export.75.sql 
9931 export.76.sql 
10061 export.77.sql 
10225 export.78.sql 
10209 export.79.sql 
10585 export.7.sql 

Может быть, пришло время, чтобы возобновить свою Camel книгу и попробовать Perl против Awk

Кто-то, пожалуйста, создайте тег для mydumper, как у меня нет 1500 точек для создания тега.

+1

Я не могу проверить это, поэтому я не буду рассматривать его как ответ, но я бы попытался закрыть предыдущий файл перед записью на новый. Возможно, это проблема с открытием слишком большого количества файлов. 'awk 'BEGIN {RS ="; "} {закрыть (" export "i" .sql "); ... ' – jas

+0

Положите его в ответ, и я приму его. Это было решением. Благодаря! – jbrahy

+0

Awesome. На данный момент книга на верблюдах может остаться на полке. – jas

ответ

1

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

/bin/awk 'BEGIN{RS=";"}{close("export" i ".sql"); x="export."++i;} {print $0";"> x".sql";}' 
Смежные вопросы