Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 29.06.2014
Сообщений: 22

Преобразование обычного текста .тхт в sql для импорта в базу

01.07.2014, 20:13. Показов 1649. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
HI!
Нужна помощь гуру-программистов.
есть одна база простая преобразоватьдля передачи sql.

как из этого

а вот и вы|здравствуйте|с приездом|с приплыздом
а вот и нет|как бы не так|что (ты!|вы!)|ничуть не бывало|(никак|вовсе) нет|(куда|где|какое) там!|да (ты|вы) что!
а всё потому|это происходит в следствии того
а вы не знали|неужели вы еще не знали
а для того|а вот для того
а если|(а) что если|(а) вдруг|того гляди|глядь|глядишь|а ну как|паче чаяния|а что если

получить это

(1, 'а', 'же,да,напротив,но,ан,однако,инак,следов ательно,потом,затем, если,когда,коли,буде,же,только,слышишь ли,слушай,отвечай,ась,чего,что (надо(бноть)),говори,ах,ахти,ай,увы,ба,с казывай,да биш,что,аюшки?,в чем дело?,что такое?,что-что'),
(2, 'а вот и вы', 'здравствуйте,с приездом,с приплыздом'),
(3, 'а вот и нет', 'как бы не так,что (ты!,вы!),ничуть не бывало,(никак,вовсе) нет,(куда,где,какое) там!,да (ты,вы) что!'),
(4, 'а если', '(а) что если,(а) вдруг,того гляди,глядь,глядишь,а ну как,паче чаяния'),
(5, 'а еще', 'вдобавок,еще,притом'),
(6, 'а именно', 'как-то,то бишь,например,особенно,в частности,вернее,именно'),
(7, 'а как же', '(таки) да,о чем парле!,что за вопрос,а то (нет,как же),спрашиваешь,конечно,о чем разговор,(таки) да,еще бы,(а то,еще бы) нет'),
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.07.2014, 20:13
Ответы с готовыми решениями:

преобразование АВС.ТХТ в файл 123.ТХТ
Написать программу, преобразующую файл АВС.ТХТ в файл 123.ТХТ. Строки изменяются по следующему правилу: все цифры заменяются на Содержимое...

Макрос для импорта данных из excel в sql
Вообщем проблема заключается в том что нужен макрос для импорта определенных столбцов из ЭКСЕЛЬ файла в MS SQL 2008. Я только учусь, уже...

Сборка для импорта данных с GoogleDocs в SQL server
Добрый день Задача - заливать данные с GoogleDocs в таблицу SQL Server Для этого решено было пойти путем CLR Вот код: using System;...

14
 Аватар для mav
228 / 206 / 120
Регистрация: 23.06.2009
Сообщений: 481
02.07.2014, 06:08
я так понял, что нужно первую часть до разделителя положить в одну ячейку таблицы, а все остальное в другую и заменить разделители на запятые?
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
$h = fopen("file.txt", "r");
$count = 1;
 
$result = array();
 
while(!feof($h))
{
    $s = stream_get_line($h, 1000000, "\r\n");
    $e = explode("|", $s);
 
    $strarr = array();
    $str = "(";
 
    for($i = 0; $i < count($e); $i++)
    {
        if($i == 0)
        {
            $str .= $count.", '".mysql_real_escape_string($e[$i])."', '";
        }
        else
        {
            $strarr[] = mysql_real_escape_string($e[$i]);
        }
    }
    
    $str .= ((!empty($strarr))?(implode(",", $strarr)):(""))."')";  
 
    $result[] = $str;
 
    $count++;
}
 
if(!empty($result))
{
    $r = implode(",", $result);
    echo $r;
}
1
0 / 0 / 0
Регистрация: 29.06.2014
Сообщений: 22
02.07.2014, 06:11  [ТС]
Спасибо попробую.
0
0 / 0 / 0
Регистрация: 29.06.2014
Сообщений: 22
03.07.2014, 07:25  [ТС]
HI!
Пробывал запустить код.
http://localhost/123.php
Получается :
$h = fopen("file.txt", "r"); $count = 1; $result = array(); while(!feof($h)) { $s = stream_get_line($h, 1000000, "\r\n"); $e = explode("|", $s); $strarr = array(); $str = "("; for($i = 0; $i < count($e); $i++) { if($i == 0) { $str .= $count.", '".mysql_real_escape_string($e[$i])."', '"; } else { $strarr[] = mysql_real_escape_string($e[$i]); } } $str .= ((!empty($strarr))?(implode(",", $strarr))""))."')"; $result[] = $str; $count++; } if(!empty($result)) { $r = implode(",", $result); echo $r; }

Как его использовать? Научите пж.)
0
 Аватар для mav
228 / 206 / 120
Регистрация: 23.06.2009
Сообщений: 481
03.07.2014, 09:38
Цитата Сообщение от rasl2014 Посмотреть сообщение
Как его использовать? Научите пж.)
ну так код надо обернуть <?php ?> для начала
PHP
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$h = fopen("file.txt", "r");
$count = 1;
 
..............................................
 
if(!empty($result))
{
    $r = implode(",", $result);
    echo $r;
}
?>
1
0 / 0 / 0
Регистрация: 29.06.2014
Сообщений: 22
03.07.2014, 09:57  [ТС]
Точно,а то смотрю почему то notepad++ не подсвечивает.
Спасибо.

Добавлено через 15 минут
Работает.
Только на denvere не может обработать большой объём, около 1200000 строк.
и кодировку в результате надо менять на юникод.
буду экспериментировать.
напишу результаты после.
0
 Аватар для mav
228 / 206 / 120
Регистрация: 23.06.2009
Сообщений: 481
03.07.2014, 10:06
Цитата Сообщение от rasl2014 Посмотреть сообщение
Только на denvere не может обработать большой объём, около 1200000 строк.
из-за чего? таймаут на исполнение скрипта?
тогда в самом начале кода надо написать set_time_limit(0);
0
0 / 0 / 0
Регистрация: 29.06.2014
Сообщений: 22
03.07.2014, 11:48  [ТС]
PHP
1
2
3
4
5
<?php 
set_time_limit(0);
$h = fopen("file.txt", "r");
$count = 1;
........................
Всё заработало.
1)Ещё надо чтоб результат был в ut8 , а то получается ��祥 из слов потом в файле sql(ut8 без BOM).
2)И результат записывался в отдельный файл file-result.txt
Не подскажите как выделять определённое количество строк (например 250000) в notepad++?
0
 Аватар для mav
228 / 206 / 120
Регистрация: 23.06.2009
Сообщений: 481
03.07.2014, 12:02
Цитата Сообщение от rasl2014 Посмотреть сообщение
1)Ещё надо чтоб результат был в ut8 , а то получается ��祥 из слов потом в файле sql(ut8 без BOM).
а исходный в cp1251? ну, например, так
PHP
1
2
$s = stream_get_line($h, 1000000, "\r\n");
$s= iconv('Windows-1251', 'UTF-8', $s);
Цитата Сообщение от rasl2014 Посмотреть сообщение
2)И результат записывался в отдельный файл file-result.txt
PHP
1
2
3
4
5
6
7
if(!empty($result))
{
    $r = implode(",", $result);
    $out = fopen("file-result.txt", "w");
    fwrite($out, $r);
    fclose($out);
}
кстати сказать, для такого объема строк мой способ с выводом в массив и последующей записью в файл может не подойти, объем немаленький. может быть сразу вытаскивать в файл результата, не складывая в массив, что-то в таком роде
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
set_time_limit(0);
$h = fopen("file.txt", "r");
$out = fopen("file-result.txt", "w");
$count = 1;
 
while(!feof($h))
{
    $s = stream_get_line($h, 1000000, "\r\n");
    $s= iconv('Windows-1251', 'UTF-8', $s);
    $e = explode("|", $s);
 
    $strarr = array();
    $str = "(";
 
    for($i = 0; $i < count($e); $i++)
    {
        if($i == 0)
        {
            $str .= $count.", '".mysql_real_escape_string($e[$i])."', '";
        }
        else
        {
            $strarr[] = mysql_real_escape_string($e[$i]);
        }
    }
    
    $str .= ((!empty($strarr))?(implode(",", $strarr)):(""))."')";  
 
    if($count > 1)
    {
        fwrite($out, ",\r\n".$str);
    }
    else
    {
        fwrite($out, $str);
    }
 
    $count++;
}
?>
Добавлено через 17 секунд
Цитата Сообщение от rasl2014 Посмотреть сообщение
Не подскажите как выделять определённое количество строк (например 250000) в notepad++?
не пользуюсь
0
0 / 0 / 0
Регистрация: 29.06.2014
Сообщений: 22
03.07.2014, 12:32  [ТС]
Цитата Сообщение от mav Посмотреть сообщение
а исходный в cp1251?
В ANSI. Если потом cp1251,то тоже норм.

Добавлено через 16 минут
Всё получилось!! Просто шедевр, а не скрипт.
Заработаю свои первые деньги в интернете,от благодарю)
Ещё в оригинальной базе .sql, через определёное количество строк, примерно 7000, ставится
строка
INSERT INTO `wp_unik_synonyms_ru` (`s_id`, `keyword`, `syn`) VALUES
может она нужна?
0
 Аватар для mav
228 / 206 / 120
Регистрация: 23.06.2009
Сообщений: 481
03.07.2014, 12:39
Цитата Сообщение от rasl2014 Посмотреть сообщение
может она нужна?
я так понимаю, что этот скрипт для того и делается, чтобы из исходного текста составить запрос в БД, а эта строка видимо остатки из прошлого экспорта таблицы БД в файл. видимо, эту строку нужно пропустить и писать файл свою версию.
тут еще может быть такой нюанс, что получившийся файл не прожуется при импорте в таблицу, поскольку длина запроса будет огроменная. в таком случае нужно разбивать запросы.
1
0 / 0 / 0
Регистрация: 29.06.2014
Сообщений: 22
03.07.2014, 15:05  [ТС]
База заливается с помощью sypexdumper2.
Вроде получилось, в инфо плагине показывает количество слов что были в базе импортируемой. И вроде работает плагин как надо.
Но в конце работы sypexdumper указал что были ошибки из-за дубликатов.
Надо почистить саму базу. Не подскажите как ?
0
 Аватар для mav
228 / 206 / 120
Регистрация: 23.06.2009
Сообщений: 481
03.07.2014, 15:18
Цитата Сообщение от rasl2014 Посмотреть сообщение
Надо почистить саму базу. Не подскажите как ?
вообще говоря, дубликатов по id быть не должно, там же счетчик с итерацией.
но для удаления дубликатов, видимо, нужно копать в сторону прееброса данных через временную таблицу с ипользованием "SELECT DISTINCT". хотя, гугло выдает много всяких способов
1
0 / 0 / 0
Регистрация: 29.06.2014
Сообщений: 22
03.07.2014, 18:52  [ТС]
Спасибо за помощь. Напишу в течении года о результатах деятельности...)
0
 Аватар для mav
228 / 206 / 120
Регистрация: 23.06.2009
Сообщений: 481
04.07.2014, 06:31
Цитата Сообщение от rasl2014 Посмотреть сообщение
Спасибо за помощь.
не за что
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.07.2014, 06:31
Помогаю со студенческими работами здесь

Автоматическое копирование данных по цвету текста вместо текста обычного
Вечер добрый. Подскажите как составить формулу для следующей ситуации. Есть столбец с текстами в строках. Текст по цвету отличается. ...

Преобразование обычного проекта в проект на Django
Вопрос таков. Есть проект написанный на Python. Можно ли как-то его адаптировать под среду Django, чтобы этот проект стал проектом Django?

Проблема в функции импорта свежих данных в базу
Привет всем! База: Oracle 8, Visual Studio 2005, FrameWork 2.0 Проблема в функции импорта свежих данных в базу. В базе лежит...

Импорт значений из тхт файла в базу данных (pdo)
Добрый день! Столкнулся с такой проблемой: есть тхт файл такого вида: Title: Blazing Saddles Release Year: 1974 Format: VHS ...

Преобразование почтового ящика пользователя из обычного Notes 8 в Web
Здравствуйте Столкнулся с такой проблемой: вначале было создано некоторое число пользователей с обычным ящиком. Теперь нужно, чтобы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru