Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / проставить апострофы в дампе sql с помощью regex / 17 сообщений из 17, страница 1 из 1
29.08.2014, 14:46
    #38732791
Kamik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проставить апострофы в дампе sql с помощью regex
Добрый день,
есть 3-х гиговый дамп из SQLite 2.
В нем не везде стоят апострофы.

Код: plsql
1.
2.
INSERT INTO ZSDM_KNMT VALUES('SAP',0000000044,7753900140,'DEUTZ','282 0386EY7103-14',2820386EY710314,'','');
INSERT INTO ZSDM_KNMT VALUES('SAP',0000000044,7780900225,'DEUTZ',04397541,04397541,'','');



Mysql при импорте первой строки ругается

ERROR 1367 (22007) at line 10563723: Illegal double '2820386E710314' value found during parsing

Как можно проставить апострофы там где их нету в файле?
...
Рейтинг: 0 / 0
29.08.2014, 16:32
    #38732935
Kamik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проставить апострофы в дампе sql с помощью regex
то есть первая строка должна выглядеть так
Код: plsql
1.
INSERT INTO ZSDM_KNMT VALUES('SAP','0000000044','7753900140','DEUTZ','282 0386EY7103-14','2820386EY710314','','');
...
Рейтинг: 0 / 0
29.08.2014, 18:01
    #38733035
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проставить апострофы в дампе sql с помощью regex
С этого сообщения можно сделать вывод что в этом поле ожидался double? Тогда кавычки ничего не дадут.

ERROR 1367 (22007) at line 10563723: Illegal double '2820386E710314' value found during parsing
...
Рейтинг: 0 / 0
29.08.2014, 18:08
    #38733046
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проставить апострофы в дампе sql с помощью regex
Mayton, не факт.

Но то, что задача в общем случае НЕ решаема, надеюсь все согласны? )))
...
Рейтинг: 0 / 0
29.08.2014, 18:10
    #38733049
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проставить апострофы в дампе sql с помощью regex
Тут нужен спец по СКЛайту. Если кавычки можно везде поставить и это прокатит - то решаемо.
...
Рейтинг: 0 / 0
29.08.2014, 18:12
    #38733051
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проставить апострофы в дампе sql с помощью regex
Непонятно почему их где-то нет. Явно у кого-то конечности были кривые (и это врят ли SqlLite).

Если в не закавыченными попали строки которые содержать запятую, то задача не решаема. Если таких строк нет, то раставить кавычки программно на Java или любом другом языке, дело 30 мин. (регулярные выражения не знаю)
...
Рейтинг: 0 / 0
29.08.2014, 18:25
    #38733068
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проставить апострофы в дампе sql с помощью regex
Кроме того это не число. Просто какая-то лажа.

2820386EY710314
...
Рейтинг: 0 / 0
29.08.2014, 18:38
    #38733085
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проставить апострофы в дампе sql с помощью regex
Решаемая задача. Надо просто распарсить и обратно склеить с добавлением кавычек где их нет. Вопрос на час-два.
Другое дело что ТС хочет регулярными выражениями это порешать - не получиться если внутри кавычек есть запятые.
...
Рейтинг: 0 / 0
29.08.2014, 18:45
    #38733088
Kamik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проставить апострофы в дампе sql с помощью regex
maytonС этого сообщения можно сделать вывод что в этом поле ожидался double? Тогда кавычки ничего не дадут.

ERROR 1367 (22007) at line 10563723: Illegal double '2820386E710314' value found during parsing нет. там все поля VARCHAR
...
Рейтинг: 0 / 0
29.08.2014, 18:46
    #38733090
Kamik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проставить апострофы в дампе sql с помощью regex
Leonid KudryavtsevНепонятно почему их где-то нет. Явно у кого-то конечности были кривые (и это врят ли SqlLite).

Если в не закавыченными попали строки которые содержать запятую, то задача не решаема. Если таких строк нет, то раставить кавычки программно на Java или любом другом языке, дело 30 мин. (регулярные выражения не знаю) это так экспортировал http://sourceforge.net/projects/sqlitebrowser/
...
Рейтинг: 0 / 0
29.08.2014, 18:50
    #38733091
Kamik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проставить апострофы в дампе sql с помощью regex
Dima TРешаемая задача. Надо просто распарсить и обратно склеить с добавлением кавычек где их нет. Вопрос на час-два.
Другое дело что ТС хочет регулярными выражениями это порешать - не получиться если внутри кавычек есть запятые. Просмотрел на скорую руку, вроде нету.
...
Рейтинг: 0 / 0
29.08.2014, 18:55
    #38733096
Kamik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проставить апострофы в дампе sql с помощью regex
сейчас еще пару тулз попробую.
...
Рейтинг: 0 / 0
29.08.2014, 19:02
    #38733104
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проставить апострофы в дампе sql с помощью regex
Чел в разработке - это задача на 30 минут. Без регекспов.

В утилитах - это задача на конфигурирование. Где там галочку поставить где чего.

Но самый идеальный вариант бро, зайди в SQLite и сделай такой

Код: sql
1.
SELECT ''''||field1||''','''||field2.... FROM TABLE....



Заспулируй в текстовый файл.

И всё. Финита комедия. И регехпы не нужны тут.
...
Рейтинг: 0 / 0
29.08.2014, 19:07
    #38733107
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проставить апострофы в дампе sql с помощью regex
KamikDima TРешаемая задача. Надо просто распарсить и обратно склеить с добавлением кавычек где их нет. Вопрос на час-два.
Другое дело что ТС хочет регулярными выражениями это порешать - не получиться если внутри кавычек есть запятые. Просмотрел на скорую руку, вроде нету.
Попробуй каким-нибудь текстовым редактором заменить с таком порядке:
Код: sql
1.
2.
, на ','
'' на '
...
Рейтинг: 0 / 0
29.08.2014, 19:20
    #38733114
Kamik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проставить апострофы в дампе sql с помощью regex
maytonЧел в разработке - это задача на 30 минут. Без регекспов.

В утилитах - это задача на конфигурирование. Где там галочку поставить где чего.

Но самый идеальный вариант бро, зайди в SQLite и сделай такой

Код: sql
1.
SELECT ''''||field1||''','''||field2.... FROM TABLE....



Заспулируй в текстовый файл.

И всё. Финита комедия. И регехпы не нужны тут.
утилиты корявые :) нету там таких настроек. (по крайней мере, те что пробовал)
Ну через запрос понятно, спасибо. Просто там таблиц к тому же немеряно, каждую отдельно сохранять муторно.
Но раз регексп никто с ходу не может сделать, придется запасаться кофем. :)
...
Рейтинг: 0 / 0
31.08.2014, 15:16
    #38733578
Kamik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проставить апострофы в дампе sql с помощью regex
отпишусь как было найдено решение. sql был импортирован в базу sqlite2 , потом сконвертирована база в sqlite3 родной утилитой. И родной же утилитой экспортировано в текст. Вуаля. Все апострофы на месте.
...
Рейтинг: 0 / 0
04.09.2014, 10:15
    #38737146
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проставить апострофы в дампе sql с помощью regex
Пример такой регулярки на JavaScript...

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
<!DOCTYPE html>
<html>
<head>
<!--
<script src='http://code.jquery.com/jquery-latest.js'></script>
<link rel='stylesheet type=text/css href=tmp.css' />
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
var str="INSERT INTO ZSDM_KNMT VALUES('SAP',0000000044,7753900140,'DEUTZ','282 0386EY7103-14',2820386EY710314,'','');"
alert(str.replace(/,(?!')([A-Z\d]+)/g,",'$1'"));
</script>
</head>
<body>
</body>
</html>
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / проставить апострофы в дампе sql с помощью regex / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]