Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] разбор файла и запросы в базу mysql

Ответить
Настройки темы
CMD/BAT - [решено] разбор файла и запросы в базу mysql

Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: judipav
Дата: 26-04-2013
Доброго времени суток уважаемые форумчане!
захотелось мне тут немного поиграться.
есть файл с данными - хочу его разобрать bat-ником и загнать в mysql в процессе каждую строку файла с данными на выходе пронумеровать счетчиком.
скрипт нехитрый но то ли лыжи не едут то ли что-то идет "не так".

Код: Выделить весь код
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION

REM создаем таблицу в базе
C:\AppServ\MySQL\bin\mysql.exe -u root --password=123456 -e "USE `hardware`; CREATE TABLE `1` (`id` int not null, `desc` varchar(255), `count` int); "    
    set /a CNT=1    REM счетчик строк

    for /f "tokens=1,2 delims=;" %%k in (1.txt) do ( 
        C:\AppServ\MySQL\bin\mysql.exe -u root --password=123456 -e "USE `hardware`; INSERT INTO `1` VALUES (%CNT%, '%%k', %%l); "

        set /a CNT+=1    REM по-идее должен инкрементировать но...
        )
интересуют две вещи:
во-первых текстовый файл и поле desc в кодировке cp1251, в поле desc вместо русских букв я получаю знаки вопроса.
безуспешно игрался с кодировками файла и поля desc, использовал utf8_general_ci при этом изменял запрос на
Код: Выделить весь код
INSERT INTO `1` VALUES ('%CNT%', CONVERT('%%k' USING utf8), %%l);
в результате поле вообще остается пустым

во-вторых счетчик CNT всегда равен "1"

Отправлено: 22:31, 26-04-2013

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата judipav:
во-вторых счетчик CNT всегда равен "1" »
«enabledelayedexpansion» (это у Вас есть) + «!CNT!» внутри скобок:
Код: Выделить весь код
@echo off
setlocal enabledelayedexpansion
…
…
for /f "tokens=1,2 delims=;" %%k in (1.txt) do (
    C:\AppServ\MySQL\bin\mysql.exe -u root --password=123456 -e "USE `hardware`; INSERT INTO `1` VALUES (!CNT!, '%%k', %%l);

Отправлено: 08:45, 27-04-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


Прошу прощения, мне очень стыдно за свою необразованность.
Где можно прочитать об использовании восклицательных знаков обрамляющих переменную, в моем справочнике я ни слова о них не нашел.

Отправлено: 12:41, 27-04-2013 | #3


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата judipav:
Где можно прочитать об использовании восклицательных знаков обрамляющих переменную »
Код: Выделить весь код
setlocal /?
в части «enabledelayedexpansion»/«disabledelayedexpansion». Также, под Windows XP:
Код: Выделить весь код
hh.exe "mk:@MSITStore:C:\WINDOWS\Help\ntcmds.chm::/setlocal.htm"
Под Windows 7:
Код: Выделить весь код
hh.exe "ms-its:C:\WINDOWS\Help\CommandReference.chm::/html/e4e4b6d3-3f1a-4851-a782-25ee2470e16e.htm"
предварительно загрузив: Download Windows Command Reference from Official Microsoft Download Center, поместив его в «%SystemRoot%/Help» и, возможно, разблокировав:

его после загрузки.

Также обязателен к прочтению Урок bat-аники.

Отправлено: 14:39, 27-04-2013 | #4


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


значение директивы SETLOCAL ENABLEDELAYEDEXPANSION мне был понятен, а вот касательно "!...!" ключевые слова нашел в "Уроке bat-аники":

Цитата:
Подстановка переменной происходит до того, как она будет изменена в процессе выполнения блока.
Переменные, заключенные в !…! вместо %…%, будут раскрыты в их значения только в момент непосредственного использования.
Это то что нужно, спасибо! Проблема решена.

Отправлено: 12:12, 28-04-2013 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] разбор файла и запросы в базу mysql

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Загрузка файла с записью url в таблицу базы mysql cibin Вебмастеру 8 23-04-2012 23:47
CMD/BAT - Смена кодировки текстового файла, поиск строки и разбор значения profcom Скриптовые языки администрирования Windows 0 10-11-2011 20:20
Прочие БД - [решено] Конвертировать базу от Access в базу VFP Hector Программирование и базы данных 2 10-02-2011 11:21
Прочие БД - [решено] как забрать базу с умершей mysql? ~Lyusi~ Программирование и базы данных 1 27-11-2009 16:37
Прочие БД - не сохраняет базу данных и не восстанавливает ее из файла slava400 Программирование и базы данных 0 03-11-2008 18:08




 
Переход