Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
bulk insert в цикле
|
|||
|---|---|---|---|
|
#18+
Привет, есть 1000 файлов .csv, которые нужно загрузить в таблицу. как заюзать xp_cmdshell или что-то другое чтобы, не прописывать 1000 раз путь к файлам ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2018, 09:02 |
|
||
|
bulk insert в цикле
|
|||
|---|---|---|---|
|
#18+
Например выгрузите во временную таблицу названия ваших файлов и потом подставляйте их названия в динамический запрос в цикле Create table #t (file_name varchar(max)) INSERT #t EXEC xp_cmdshell 'dir /b "C:\*.CSV'; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2018, 09:10 |
|
||
|
bulk insert в цикле
|
|||
|---|---|---|---|
|
#18+
assmsk, спасибо за совет, но больше не проблема как выгрузить этот список в табличку, а как сам курсор c bulk-ом написать. Как вместо @ подставить этот список ? BULK INSERT #t_vasya FROM 'C:\cur_bulk_280218\@' -- менять по необходимости WITH ( firstrow = 2, MAXERRORS = 0, FIELDTERMINATOR = '\t', ROWTERMINATOR = '\n', DATAFILETYPE='widechar', CODEPAGE = 'ACP' ); go ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2018, 09:29 |
|
||
|
bulk insert в цикле
|
|||
|---|---|---|---|
|
#18+
Вам же уже ответили. assmskНапример выгрузите во временную таблицу названия ваших файлов и потом подставляйте их названия в динамический запрос в цикле Create table #t (file_name varchar(max)) INSERT #t EXEC xp_cmdshell 'dir /b "C:\*.CSV'; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2018, 09:33 |
|
||
|
bulk insert в цикле
|
|||
|---|---|---|---|
|
#18+
Надеюсь поймете идею Declare @t table (nn int identity,file_name varchar(max)) Declare @i int = 1 Declare @strSQL varchar(max) INSERT @t EXEC xp_cmdshell 'dir /b "C:\cur_bulk_280218\*.CSV'; While @i <= (Select max(nn) from @t) begin Set @strSQL = 'BULK INSERT #' + (Select file_name from @t where nn = @i) + 'FROM 'C:\cur_bulk_280218\' + (Select file_name from @t where nn = @i) + ' WITH ( firstrow = 2, MAXERRORS = 0, FIELDTERMINATOR = ''\t'', ROWTERMINATOR = ''\n'', DATAFILETYPE=''widechar'', CODEPAGE = ''ACP'' );' exec(@strSQL) Set @i = @i + 1 end ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2018, 09:48 |
|
||
|
bulk insert в цикле
|
|||
|---|---|---|---|
|
#18+
Спасибо большое, сейчас буду изучать. а так не получится ? пока ошибка Msg 4860, Level 16, State 1, Line 1 Cannot bulk load. The file "+@a+" does not exist. в файле лежат пути к 1000 файлам. DECLARE @a VARCHAR(50); SET @a='C:\2.txt' DECLARE @b VARCHAR(500); SET @b='BULK INSERT t_konkud_test_bulk FROM ''+@a+'' WITH (MAXERRORS = 0, FIELDTERMINATOR = ''\t'', ROWTERMINATOR = ''\n'', DATAFILETYPE=''widechar'', CODEPAGE = ''ACP'') ' exec(@b); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2018, 09:56 |
|
||
|
bulk insert в цикле
|
|||
|---|---|---|---|
|
#18+
assmsk, Declare @tf table (nn int identity,file_name varchar(max)) Declare @i int = 1 Declare @strSQL varchar(max) --drop table #t1 insert into @tf exec master.dbo.xp_cmdshell 'dir /b C:\work_ne_trogat /O:E' --select * from @tf --Select file_name from @tf While @i <= (Select max(nn) from @tf) begin Set @strSQL = 'BULK INSERT t_vasya' + (Select file_name from @tf where nn = @i) + 'FROM ''C:\work_ne_trogat\'' + (Select file_name from @tf where nn = @i) + '' WITH ( firstrow = 1 ,FIELDTERMINATOR = '';'' ,ROWTERMINATOR = ''\n'' ,tablock );' exec(@strSQL) Set @i = @i + 1 end вроде уже близок , но пока вылазит море однотипных ошибок Msg 102, Level 15, State 1, Line 1 Incorrect syntax near 'января'. Msg 1087, Level 15, State 2, Line 1 Must declare the table variable "@tf". Msg 105, Level 15, State 1, Line 6 Unclosed quotation mark after the character string ' ,tablock );'. у меня подозрения, что чему-то не хватает длины строки, но не понимаю чему... Мб кто видит причину ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2018, 10:48 |
|
||
|
bulk insert в цикле
|
|||
|---|---|---|---|
|
#18+
svanrus, а что ваша таблица @tf должна быть видна в EXEC()??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2018, 10:52 |
|
||
|
bulk insert в цикле
|
|||
|---|---|---|---|
|
#18+
с каывычками у вас бред какой-то как то так наверное авторSet @strSQL = 'BULK INSERT t_vasya' + (Select file_name from @tf where nn = @i) + 'FROM ''C:\work_ne_trogat\''' + (Select file_name from @tf where nn = @i) + ' WITH ( firstrow = 1 ,FIELDTERMINATOR = '';'' ,ROWTERMINATOR = ''\n'' ,tablock );' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2018, 10:54 |
|
||
|
bulk insert в цикле
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. Зато не курсор! Рукалицоплескаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2018, 10:57 |
|
||
|
bulk insert в цикле
|
|||
|---|---|---|---|
|
#18+
Мне кажется так правильнее: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2018, 10:59 |
|
||
|
bulk insert в цикле
|
|||
|---|---|---|---|
|
#18+
Kopelly, иможно и так Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2018, 11:12 |
|
||
|
bulk insert в цикле
|
|||
|---|---|---|---|
|
#18+
TaPaKKopelly, иможно и так почти получилось! осталось правильно кавычки расставить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2018, 11:15 |
|
||
|
bulk insert в цикле
|
|||
|---|---|---|---|
|
#18+
Руслан ДамировичTaPaKKopelly, иможно и так почти получилось! осталось правильно кавычки расставить... развлекайтесь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2018, 11:19 |
|
||
|
bulk insert в цикле
|
|||
|---|---|---|---|
|
#18+
Svanrus, если проблемы сформированием динамического запроса сначала поставьте print вместо exec, чтобы наглядно понять в каком месте у вас ошибка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2018, 11:31 |
|
||
|
bulk insert в цикле
|
|||
|---|---|---|---|
|
#18+
TaPaKразвлекайтесь Угу (с) после сборки доработать напильником... Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2018, 11:42 |
|
||
|
bulk insert в цикле
|
|||
|---|---|---|---|
|
#18+
Руслан Дамирович, fail, пилите дальше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2018, 11:43 |
|
||
|
bulk insert в цикле
|
|||
|---|---|---|---|
|
#18+
svanrus, если научитесь работать с Integration Services подобные задачи не будут вызывать никаких проблем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2018, 12:56 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39608304&tid=1690194]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
59ms |
get topic data: |
14ms |
get forum data: |
5ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
| others: | 218ms |
| total: | 389ms |

| 0 / 0 |
