|
|
|
Текстовые файл *.txt -> SQL Server
|
|||
|---|---|---|---|
|
#18+
Система сбора статистики каждый час формирует выходной текстовый файл. Первая строка - наименование столбцов, последующие строки - данные. Причём, КОЛИЧЕСТВО СТОЛБЦОВ может время от времени изменяться. Поэтому создавать заранее таблицу, в которую будут копироваться данные, не имеет смысла, потому что такие фичи как BCP, BULK INSERT и т.д. переносят данные в существующую таблицу. Задача: необходимо каким-то образом автоматически создать таблицу и скопировать в неё данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2002, 13:26:01 |
|
||
|
Текстовые файл *.txt -> SQL Server
|
|||
|---|---|---|---|
|
#18+
Используй DTS, например, в Enterprise Manager. Именно для таких случаев это и предназначено ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2002, 13:50:29 |
|
||
|
Текстовые файл *.txt -> SQL Server
|
|||
|---|---|---|---|
|
#18+
BULK INSERT - решает вашу задачу. Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2002, 14:27:11 |
|
||
|
Текстовые файл *.txt -> SQL Server
|
|||
|---|---|---|---|
|
#18+
To vap. Дело в том, что в таблице #temp я получаю построчную копию файла, а мне надо создать таблицу с неизвестным заранее количеством полей , в которой имена полей находятся в первой строке файла (поля разделены символом табуляции). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2002, 14:45:10 |
|
||
|
Текстовые файл *.txt -> SQL Server
|
|||
|---|---|---|---|
|
#18+
В любом случае ваш парсер дожен знать структуру, или генерите файлы в формате XML. Можно строки пропарсить по разделителям. SQL сервер достаточно быстро работает со строками. У меня получалось закачивать со скоростью около 1000 строк/сек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2002, 14:54:54 |
|
||
|
Текстовые файл *.txt -> SQL Server
|
|||
|---|---|---|---|
|
#18+
Я подобные вещи решаю динамическим запросом типа declare @sss varchar(500) if @object_id(@tbl) is null begin select @sss='create table '+LTRIM(RTRIM(@tbl))+'( id int' select @sss=LTRIM(RTRIM(@sss))+', ff moey ' --- далее сервер формирует определение таблицы select @sss=LTRIM(RTRIM(@sss))+') ' exec(@sss) end ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2002, 15:26:04 |
|
||
|
Текстовые файл *.txt -> SQL Server
|
|||
|---|---|---|---|
|
#18+
Если у вас действительно выполняются следующие условия "формирует выходной текстовый файл. Первая строка - наименование столбцов, последующие строки - данные" плюс поля разделены стандартным delimiter-ом, то я бы предложил использовать linked server хоть бы с Jet.OLEDB Provider. Тогда можно делать выборки вида SELECT * FROM mylinkedtxtsrv...myfile#txt Единственная "особенность" в том, что Jet.OLEDB Provider может неправильно определять типы данных в столбцах, т.к. делает это сканируя N первых строк файла. Но эту проблему можно обойти создав файл schema.ini ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2002, 17:24:42 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=3363&tid=1818238]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
26ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
25ms |
get tp. blocked users: |
1ms |
| others: | 230ms |
| total: | 311ms |

| 0 / 0 |
