Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Импорт таблицы из файла *.тхт / 25 сообщений из 25, страница 1 из 1
13.09.2007, 11:01
    #34796740
Vetic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт таблицы из файла *.тхт
как выполнить импорт таблицы (первые 2 поля из 4) из файлы формата: текст. Подскажите как реализовать, или где прочитать (хотелось бы на русском).
...
Рейтинг: 0 / 0
13.09.2007, 14:12
    #34797694
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт таблицы из файла *.тхт
Vetic пишет:
> текст. Подскажите как реализовать, или где прочитать (хотелось бы на

Для начала прочитать надо первый топик форума.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
13.09.2007, 15:38
    #34798133
Vetic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт таблицы из файла *.тхт
Версия ASE 15
...
Рейтинг: 0 / 0
13.09.2007, 19:14
    #34799006
rcryo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт таблицы из файла *.тхт
bcp /?
так как требуется только первые два поля наверное придется делать загрузку через временную таблицу или попробовать использовать для загрузки format file

мануал есть на сайте sybase.com
...
Рейтинг: 0 / 0
13.09.2007, 20:18
    #34799094
Rubber
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт таблицы из файла *.тхт
если записей до ~65 000 - можно импортировать *.txt в EXCEL (или CALC) и посредством оператора склеивания строк в формулах сформировать инсерт для каждой записи.
...
Рейтинг: 0 / 0
13.09.2007, 20:26
    #34799103
Rubber
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт таблицы из файла *.тхт
повторюсь: для выше изложенного способа есть указанное ограничение количества записей.
Vetic вы бы описали задачу поконкретнее, ведь, напрмер,
текстовые файлы тоже разные могут быть.
И - перекликается ли это с топиком 472908 ?
...
Рейтинг: 0 / 0
13.09.2007, 20:50
    #34799139
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт таблицы из файла *.тхт
Rubberесли записей до ~65 000 - можно импортировать *.txt в EXCEL (или CALC) и посредством оператора склеивания строк в формулах сформировать инсерт для каждой записи.Нееее... Если идти по пути формирования insert'ов для каждой записи, то лучше взять не Эксель а какой-нибудь нормальный язык. Хоть тот-же vbs или perl, формировать строки на них намного проще чем в монстрах типа Экселя и нету ограничений на количество строк.
...
Рейтинг: 0 / 0
13.09.2007, 20:54
    #34799146
Rubber
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт таблицы из файла *.тхт
White Owl - согласен.
однако вариант о котором говорю можно реализовать с минимальными знаниями 'офиса' и SQL...
...
Рейтинг: 0 / 0
13.09.2007, 20:56
    #34799151
Rubber
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт таблицы из файла *.тхт
имеется ввиду без опыта общения с bcp, vbs или perl...
...
Рейтинг: 0 / 0
13.09.2007, 21:01
    #34799161
Rubber
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт таблицы из файла *.тхт
и обобщённая схема уже описана
MasterZiv
- создаешь в tempdb таблицу #TempTable
- вставляешь в нее нужные ID-ы
- делаешь выборку
- удаляешь временную таблицу (не обязательно, если сразу после этого сделаешь disconnect).

Все в одном простом клиентском соединении. ( напр. в ISQL ).
...
Рейтинг: 0 / 0
13.09.2007, 23:59
    #34799407
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт таблицы из файла *.тхт
rcryo пишет:
> так как требуется только первые два поля наверное придется делать
> загрузку через временную таблицу или попробовать использовать для
> загрузки format file

Использовать временную таблицу нет смысла, потому что все равно
будет логирование при переносе данных в основную таблицу.

Использовать форматный файл невозможно, потому что это не позволит
вставлять какую-то часть таблицы - строки-то целиком либо вставляются ,
либо нет.

Так что надо простыми UPDATE-ами, только паковать их в транзакции
по N строк, где N = 100-1000 в зависимости от длины полей.
Хотя может и больше.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
14.09.2007, 09:08
    #34799659
Ggg_old
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт таблицы из файла *.тхт
Я как всегда наверное опоздал, но есть способ без перла и VBS, - все делается на простом бат-файле.
Напримеh пусть есть текстовой файло вида:
val1,val2,val3,val4
....
Или вида: val1 val2 val3 val4
Идея: написать бат-файл, который запарсает исходный текстовый файл и заимпортирует два первых поля из каждой строки в таблицу.

Сгенерируем sql-скрипт.

FOR /F "tokens=1,2 delims=, " %i in (MYFILE.TXT) do @echo insert into MYTABLE values(%i,%j)>>IMPORT_SQCRIPT.SQL

полученный скрип через isql вызывается тут-же в батнике.
...
Рейтинг: 0 / 0
14.09.2007, 13:59
    #34800898
Vetic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт таблицы из файла *.тхт
В общем задача конкренее стои так:
есть файл в котором гдето 3000 - 4000 тысячи записей предствленных гдето так:
ххххххххххххххх у zzzz w
ххххххххххххххх у zzzz w
ххххххххххххххх yyyу zzzz w
ххххххххххххххх у zzzz w
ххххххххххххххх yyyу zzzz w
...
нужно выбрать записи из БД где буду использовать 1е и 2е поле. Права на запись есть только во временную таблицу.
...
Рейтинг: 0 / 0
14.09.2007, 14:01
    #34800905
Vetic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт таблицы из файла *.тхт
Разделителем служи n пробелов, и длинна полей в знаках тож разная
...
Рейтинг: 0 / 0
14.09.2007, 14:08
    #34800935
Vetic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт таблицы из файла *.тхт
Rubberи обобщённая схема уже описана
MasterZiv
- создаешь в tempdb таблицу #TempTable
- вставляешь в нее нужные ID-ы
- делаешь выборку
- удаляешь временную таблицу (не обязательно, если сразу после этого сделаешь disconnect).

Все в одном простом клиентском соединении. ( напр. в ISQL ).


не разберусь как в нее вставить данные из файла
...
Рейтинг: 0 / 0
14.09.2007, 14:17
    #34800967
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт таблицы из файла *.тхт
Vetic пишет:

> не разберусь как в нее вставить данные из файла

Оператором INSERT
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
14.09.2007, 14:49
    #34801091
Vetic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт таблицы из файла *.тхт
MasterZiv
Vetic пишет:

> не разберусь как в нее вставить данные из файла

Оператором INSERT
Posted via ActualForum NNTP Server 1.4

Подскажи как! как указать путь к файлу (он находится локально, доступ к серверу через сеть), как указать маску чтоб выбрать только необходимые данные.
...
Рейтинг: 0 / 0
14.09.2007, 14:56
    #34801117
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт таблицы из файла *.тхт
Vetic пишет:

> Подскажи как! как указать путь к файлу (он находится локально, доступ к
> серверу через сеть), как указать маску чтоб выбрать только необходимые
> данные.

Оператор INSERT не использует файлов.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
14.09.2007, 15:04
    #34801178
Vetic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт таблицы из файла *.тхт
Не дочитал ты немного:

MasterZiv
Vetic пишет:

> не разберусь как в нее вставить данные из файла

Оператором INSERT
...
Рейтинг: 0 / 0
14.09.2007, 15:20
    #34801281
Ggg_old
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт таблицы из файла *.тхт
2vetic:
Вы мой пост внимательно читали?? По-моему я дал исчерпывающий ответ, который вам на 100% подходит.
...
Рейтинг: 0 / 0
14.09.2007, 17:04
    #34801749
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт таблицы из файла *.тхт
Vetic пишет:

> > не разберусь как в нее вставить данные из файла
>
> Оператором INSERT

Я имел в виду, что надо написать программу, которая бы читала
данные из файла, формировала операторы INSERT и посылала бы их
на сервер (на самом деле поскольку стоит задача изменить
2 поля в существующей таблице, я бы формировал операторы
UPDATE). Вы знаете еще какие-то способы это сделать ?
Я - нет.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
14.09.2007, 17:05
    #34801753
Vetic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт таблицы из файла *.тхт
пытаюсь разобратся как сделать это с помощью bcp.exe
...
Рейтинг: 0 / 0
14.09.2007, 17:14
    #34801775
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт таблицы из файла *.тхт
Veticпытаюсь разобратся как сделать это с помощью bcp.exe
проще и быстрее воспользоваться советом Ggg_old - дело предложил.
...
Рейтинг: 0 / 0
14.09.2007, 17:41
    #34801851
Vetic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт таблицы из файла *.тхт
komrad Veticпытаюсь разобратся как сделать это с помощью bcp.exe
проще и быстрее воспользоваться советом Ggg_old - дело предложил.

Саму проблему я решил, просто загнал все в Excel,
и сделал все так
Код: plaintext
1.
2.
3.
4.
5.
select XXXXXXXX as pole1, YYYY as pole2 into #tmp
union all select XXXXXXXX,YYYY
union all select XXXXXXXX,YYYY
union all select XXXXXXXX,YYYY
union all select XXXXXXXX,YYYY
\
мне просто хочется с bcp.exe разобраться, никак не пойму как там XXXXXXXX от YYYY отделить и как в нужное поле указать соответствующее.
...
Рейтинг: 0 / 0
14.09.2007, 18:12
    #34801940
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт таблицы из файла *.тхт
Vetic пишет:
> пытаюсь разобратся как сделать это с помощью bcp.exe

С помощью BCP изменить два поля существующих записей нельзя.

Можно только загрузить записи в какую-то таблицу.

> мне просто хочется с bcp.exe разобраться, никак не пойму как там XXXXXXXX от
> YYYY отделить и как в нужное поле указать соответствующее.

- разбирайся, полезно.
Типичный bcp -файл (в текстовом виде ) выглядит как
текстовый файл, по одной строке на запись, в котором поля
в записях (строках) разделены разделителем, обычно запятая (или <TAB> ?
черт, забыл уже ... ).
Поля в файле должны идти слева направо в том же порядке,
что физический порядок полей в таблице.
По идее, разделителители строк и полей и порядок и формат полей
можно задавать специальным файлом формата. Его лучше сделать,
интерактивно, выполняя ВЫГРУЗКУ из таблицы, в которую надо будет
данные загружать (или аналогичную ей, поскольку из #temp таблицы
выгружать не получится - она в другом соединении находится).
Там есть у BCP ключик спец.

Но лучше форматный файл не использовать, лучше
выгрузить данные из загружаемой таблицы (или аналогичной), посмотреть,
как выглядит формат файла, и сделать такой же.

Потом его загрузить.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Импорт таблицы из файла *.тхт / 25 сообщений из 25, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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