|
|
|
MSSQL и VFP (работа скриптов скопом)
|
|||
|---|---|---|---|
|
#18+
Составил файл скриптов на вставку в определенную таблицу в БД на MSSQL Server. Для того чтобы запустить эти скрипты из VFP конечно можно построчно просматривать файл и функцией SQLEXEC посылать по одному скрипту на сервер. А можно ли скопом??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2006, 13:17 |
|
||
|
MSSQL и VFP (работа скриптов скопом)
|
|||
|---|---|---|---|
|
#18+
А если их поместить в хранимую процедуру, а из фокса вызвать её и все? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2006, 14:01 |
|
||
|
MSSQL и VFP (работа скриптов скопом)
|
|||
|---|---|---|---|
|
#18+
NutssА если их поместить в хранимую процедуру, а из фокса вызвать её и все?Нет, это решение мне не подходит. Т.к. происходит обычная загрузка данных. В БД я ничего не добавляю кроме загрузки данных. Это чужая БД. Просто я из разных источников (БД Access, ... ) составил файл скриптов на вставку данных и теперь мне просто надо отработать эти скрипты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2006, 14:12 |
|
||
|
MSSQL и VFP (работа скриптов скопом)
|
|||
|---|---|---|---|
|
#18+
вот такой вариант работает, значит можно и скопом nConnect=SQLCONNECT('TEST') ? SQLEXEC(nConnect,"CREATE TABLE test (t varchar(1))") ? SQLEXEC(nConnect, "insert into test (t) values ('1')"+CHR(13)+; "insert into test (t) values ('2')"+CHR(13)+; "insert into test (t) values ('3')"+CHR(13)+; "insert into test (t) values ('4')") ? SQLEXEC(nConnect,"DROP TABLE test ") =SQLDISCONNECT(nConnect) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2006, 14:24 |
|
||
|
MSSQL и VFP (работа скриптов скопом)
|
|||
|---|---|---|---|
|
#18+
можно ещё использовать утилиту isql самого MS SQL сервера или вызывать её из того же фокса ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2006, 14:34 |
|
||
|
MSSQL и VFP (работа скриптов скопом)
|
|||
|---|---|---|---|
|
#18+
Nutssвот такой вариант работает, значит можно и скопом nConnect=SQLCONNECT('TEST') ? SQLEXEC(nConnect,"CREATE TABLE test (t varchar(1))") ? SQLEXEC(nConnect, "insert into test (t) values ('1')"+CHR(13)+; "insert into test (t) values ('2')"+CHR(13)+; "insert into test (t) values ('3')"+CHR(13)+; "insert into test (t) values ('4')") ? SQLEXEC(nConnect,"DROP TABLE test ") =SQLDISCONNECT(nConnect)Сразу встает вопрос о максимальной длине строки, которую пропустит функция SQLEXEC. У меня порядка 1000 INSERT-ов по 297(300) символов на INSERT, итого 300000 символов. Спасибо за идею. Надо попробовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2006, 14:39 |
|
||
|
MSSQL и VFP (работа скриптов скопом)
|
|||
|---|---|---|---|
|
#18+
Класс. А что через QA никак это не сделать? Или например циклом по 1 Insert-у? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2006, 14:43 |
|
||
|
MSSQL и VFP (работа скриптов скопом)
|
|||
|---|---|---|---|
|
#18+
Петров Андрей...А что через QA никак это не сделать?..Нет, требуется внутри VFP. Петров Андрей...Или например циклом по 1 Insert-у?Как я рассказывал выше (см. самый первый post), это не проблема. Я хотел просмотреть случай именно скопом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2006, 15:59 |
|
||
|
MSSQL и VFP (работа скриптов скопом)
|
|||
|---|---|---|---|
|
#18+
Скопом можно скорее всего сделать файл и подгрузить его в реал-тайм как скрипт средствами самого SQL сервера. А вот как тут уже помоему предлагали. На мой взгляд такой вариант будет правильнее. В общем сильно коробит использование "батчей" для экспорта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2006, 16:15 |
|
||
|
MSSQL и VFP (работа скриптов скопом)
|
|||
|---|---|---|---|
|
#18+
s=filetostr('file.sql') sqlexec(cn,s) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2006, 16:43 |
|
||
|
MSSQL и VFP (работа скриптов скопом)
|
|||
|---|---|---|---|
|
#18+
1024s=filetostr('file.sql') sqlexec(cn,s)Вот это класс, что я и хотел. Спасибо тебе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2006, 17:41 |
|
||
|
MSSQL и VFP (работа скриптов скопом)
|
|||
|---|---|---|---|
|
#18+
Для отправки INSERT - SCRIPT-ов из файла на MSSQL Server использую следующее: Код: plaintext 1. Но когда анализирую информацию, т.е. считаю кол-во организованных INSERT скриптов в файле, их 14360. Теперь проверяю на сервере кол-во принятых записей, но их записалось 13172. Длина файла 1690275 byte. В документации указано ограничение на длину строки: Maximum # of characters per character string or memory variable 16777184 Очищаю таблицу на сервере и запускаю файл скриптов с SQL Manager, все 14360 записей сформировано. Интересно почему в Fox-e неполучилось? Неужели придется построчно скрипты запускать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2006, 09:02 |
|
||
|
MSSQL и VFP (работа скриптов скопом)
|
|||
|---|---|---|---|
|
#18+
Ребята извините все получилось. Это я из старого файла загружал. Еще раз прошу прощения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2006, 09:53 |
|
||
|
MSSQL и VFP (работа скриптов скопом)
|
|||
|---|---|---|---|
|
#18+
VFP80SP1. При использовании Код: plaintext 1. значение m.n_sqlexec > 0, т.е. функция SQLEXEC() завершила свою работу. И анализирую информацию, т.е. считаю кол-во организованных INSERT скриптов в файле и на сервере кол-во принятых записей равно. Каков тогда максимальный размер файла который можно передовать без получения ошибки??? Или это все выявится эксперементальным путем, что нежелательно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2006, 12:47 |
|
||
|
MSSQL и VFP (работа скриптов скопом)
|
|||
|---|---|---|---|
|
#18+
Владимир САСоставил файл скриптов на вставку в определенную таблицу в БД на MSSQL Server. Для того чтобы запустить эти скрипты из VFP конечно можно построчно просматривать файл и функцией SQLEXEC посылать по одному скрипту на сервер. А можно ли скопом??? Честно говоря не понял в чем ваша проблемма !? Сервер через SQLEXEC выполняет не команду, а пакет (batch). Размер пакета очень велик (в районе 128 МБ - 64000 сетевых пакетов), а размер переменной в VFP равен 16 МБ. Я думаю, что вам хватит и того и другого. В крайнем случае можно рабить на несколько команд. Формируйте пакет в VFP и собирайте все в переменную и выполняйте через SQLEXEC. А использовать скрипт, созданный генератором скрипта EM или QA через файл скрипта (s=filetostr('file.sql') sqlexec(cn,s)) надо очень осторожно. Оба продукта любят вставлять в скрипт директивы конца пакета (GO), который SQL сервер не поймет. С уважением, Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2006, 20:32 |
|
||
|
MSSQL и VFP (работа скриптов скопом)
|
|||
|---|---|---|---|
|
#18+
Владимир САСоставил файл скриптов на вставку в определенную таблицу в БД на MSSQL Server. Для того чтобы запустить эти скрипты из VFP конечно можно построчно просматривать файл и функцией SQLEXEC посылать по одному скрипту на сервер. А можно ли скопом??? Честно говоря не понял в чем ваша проблемма !? Сервер через SQLEXEC выполняет не команду, а пакет (batch). Размер пакета очень велик (в районе 128 МБ - 64000 сетевых пакетов), а размер переменной в VFP равен 16 МБ. Я думаю, что вам хватит и того и другого. В крайнем случае можно рабить на несколько команд. Формируйте пакет в VFP и собирайте все в переменную и выполняйте через SQLEXEC. А использовать скрипт, созданный генератором скрипта EM или QA через файл скрипта (s=filetostr('file.sql') sqlexec(cn,s)) надо очень осторожно. Оба продукта любят вставлять в скрипт директивы конца пакета (GO), который SQL сервер не поймет. С уважением, Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2006, 20:34 |
|
||
|
MSSQL и VFP (работа скриптов скопом)
|
|||
|---|---|---|---|
|
#18+
Ограничение на 16МБ в FoxPro - это тот размер, который будет корректно работать с любыми строковыми функциями FoxPro. Закачать через FileToStr() можно практически неограниченный объем в переменную памяти (в пределах оперативной памяти). Но это не значит, что при выполнении каких-то операций с подобной строковой переменной Вас не выбросит из FoxPro или же содержимое переменной не будет обрезано до 16МБ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2006, 21:54 |
|
||
|
MSSQL и VFP (работа скриптов скопом)
|
|||
|---|---|---|---|
|
#18+
Hi Владимир! > Я думал что максимальная длина переменной S ограничивается 16,777,184 byte Именно так и есть. > Но у меня сформировался файл длиной 23,757,236 byte и работа прошла > нормально. Переменная получаемая посредством FILETOSTR() - это исключение из правила :) Она может быть очень большой. Я не в курсе - это так и задумано, или это недоработка MSFT (не поставили одну проверку). Факт в том, что при использовании большинства команд работы со строками возникнет ошибка. Так что как говорится "используй, но осторожно - осторожно, но используй" :) Если уж очень хочется с огромными строками работать, то используй старый добрый приём - помести данные в memo поле :) Там размер ограничен чем-то вроде 2Гб-520 байт... Но опять-же обработать такое содержимое как одну "цельную" строку у тебя не получится. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2006, 00:34 |
|
||
|
MSSQL и VFP (работа скриптов скопом)
|
|||
|---|---|---|---|
|
#18+
Спасибо ВСЕМ что откликнулись. Я понял так. Скорее всего не надо шутить с переменной выше 16Мб. Лучше разрезать полученный файл на части. И отправлять эти части на сервер. Т.к. программа будет работать у пользователя, то не следует перегибать палку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2006, 06:48 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=41&tid=1591931]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
180ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
76ms |
get tp. blocked users: |
2ms |
| others: | 202ms |
| total: | 509ms |

| 0 / 0 |
