Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как залить csv на SQL Server через adp или mdb / 12 сообщений из 12, страница 1 из 1
19.01.2005, 13:38:27
    #32872291
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как залить csv на SQL Server через adp или mdb
Имеется текстовой csv-файл, выбираемый пользователем клиентского Access, как его залить в таблицу из tempdb? Естественно без использования bcp =)
...
Рейтинг: 0 / 0
19.01.2005, 13:53:21
    #32872341
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как залить csv на SQL Server через adp или mdb
Залить в блоб поле или в табличку по её полям?
В первом случае можно через adodb.stream, во втором - DoCmd.TransferSpreadsheet (это к xls файлам - csv не пробовал таким макаром) - создаст свою табличку, потом из неё импорт.

А чем bcp не угодил?:)
...
Рейтинг: 0 / 0
19.01.2005, 14:10:07
    #32872385
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как залить csv на SQL Server через adp или mdb
Просто не горю желанием бегать и устанавливать его (bcp). Хочу ограничиться MDAC'ом. Буду пробовать, спасибо
...
Рейтинг: 0 / 0
19.01.2005, 14:46:22
    #32872483
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как залить csv на SQL Server через adp или mdb
Так можно сделать хп на сервере и в качестве параметра передавать ей имя файла - вот и всё. Зачем на клиенте это ставить?
...
Рейтинг: 0 / 0
19.01.2005, 15:01:00
    #32872542
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как залить csv на SQL Server через adp или mdb
А это мысль! Скорее всего так и сделаю, надо будет только имена использовать в UNC формате, по идее должно работать, надо будет только с правами доступа SQL Server к файлу разобраться.

Кстати, чтобы обработать текстовой файл можно использовать DoCmd.TransferText

Еще раз спасибо
...
Рейтинг: 0 / 0
19.01.2005, 15:31:12
    #32872662
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как залить csv на SQL Server через adp или mdb
Да не за что.
С правами проблем быть не должно:)
...
Рейтинг: 0 / 0
19.01.2005, 16:04:27
    #32872762
Latuk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как залить csv на SQL Server через adp или mdb
Если у учетки под которой стартует SQL сервер права админа домена
то никаких проблемм не будет просто юзаеш сетевой путь через C$

А вот с TransferSpreadsheet проблемм хапнеш
(пришлось недавно делать импорт из Excel
у юзера который конектился с машины из другого домена)

для начала tempdb не проканает.
Во первых потому что тогда юзер должен быть членом dbwriter
во вторых (и главных) потому что эта падла отдельный конекшн открывает
и сам понимаеш чаво будет с твоей табличкой када
TransferSpreadsheet закончит и конект закроет (причем не всегда)

Пришлось делать TransferSpreadsheet в MDB и потом уже из него сливать запросом на сервак.
...
Рейтинг: 0 / 0
19.01.2005, 16:19:49
    #32872818
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как залить csv на SQL Server через adp или mdb
Latuk
Да, делали такое - ну у таблички будет владельцем пользователь, который выполняет данную операцию - у нас отслеживалось - правда в этой же сети...
...
Рейтинг: 0 / 0
19.01.2005, 16:30:52
    #32872864
Latuk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как залить csv на SQL Server через adp или mdb
Проблемма ежели временную таблицу делать
TransferSpreadsheet ее прекрасно создает
но делает это через отдельный конекшн
даже если сделать ## то после конекшн часто успевает закрытся
и соотв. табличка дропается прежде чем успеваеш воспользоватся ее содержимым.
...
Рейтинг: 0 / 0
19.01.2005, 16:53:43
    #32872958
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как залить csv на SQL Server через adp или mdb
Сейчас посмотрел на код - всё нормально.
Код: plaintext
1.
2.
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "RateTable_XLS", Me.Path_An, True
Forms![Import_XLS]![Zone_miss_XLS].Form.RecordSource = ""
Forms![Import_XLS]![Zone_miss_SQL].Form.RecordSource = ""

Далее с этой табличкой ещё кучу всего делаем, а только потом данные вливаем туда, куда надо - всё в норме - никуда табличка не исчезает и по сей день всё работает. Но это в одной сети при виндовс аутентификации (последнее, впрочем, неважно)...
...
Рейтинг: 0 / 0
19.01.2005, 16:54:40
    #32872962
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как залить csv на SQL Server через adp или mdb
Forms![Import_XLS]![Zone_miss_XLS].Form.RecordSource = ""
Тут просто селекты не стал приводить полностью. Селекты на основе этой таблички.
...
Рейтинг: 0 / 0
19.01.2005, 17:02:56
    #32872979
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как залить csv на SQL Server через adp или mdb
>Latuk
Да, такого мне не надо
Пока остановился на варианте серверной хп, что-то типа

CREATE PROCEDURE BulkInsProc
@path nvarchar(255)
AS
BEGIN
-- Объявляем переменную, где будет храниться строка динамического SQL
DECLARE @SQL nvarchar(1000)
-- Присваиваем ей строку операции вставки
SET @SQL = 'BULK INSERT tempdb.dbo.PU_pack01
FROM '''+ @path +
' ''WITH
( FIELDTERMINATOR = '','',
ROWTERMINATOR = ''\n'',
FIRSTROW = 2,
CODEPAGE = ''RAW'')'
-- Выполняем операцию вставки
EXEC(@SQL)
END

GO
EXECUTE BulkInsProc '\\ws109\TMP\new\_PU174505N23.f1'
SELECT * FROM tempdb.dbo.PU_pack01
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как залить csv на SQL Server через adp или mdb / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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