Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Дайте совет: как указать разделитель?  [new]
Ilham Kadyshev
Member

Откуда:
Сообщений: 8
Проблема такая:
Есть 2 машины с разными SQL серверами: 1) SQL 2005 Express 2) SQL 2008 Enterprise.
При выполнении следующего запроса
SELECT * FROM OPENROWSET('MSDASQL',
'Driver={Microsoft Text Driver (*.txt; *.csv)};FIELDTERMINATOR=;;DefaultDir=\\prolliant\Veda\Veda\base;',
'select * from 20120206.txt')


содержимое файла 20120206.txt
1;2;3
точка;запятая;
просто,запятая,

результаты на обеих машинах различаются.
На первой машине:
Картинка с другого сайта.
На второй:
Картинка с другого сайта.

А нужно, чтобы результат второго совпадал с первым. (Т.е. считать разделителем точку с запятой на SQL 2008)
Подскажите, как быть???

P.S.
Региональные настройки одинаковы на обеих машинах.
Schema.ini не вариант.
19 июл 12, 16:06    [12889318]     Ответить | Цитировать Сообщить модератору
 Re: Дайте совет: как указать разделитель?  [new]
Vicont_rtf
Member

Откуда:
Сообщений: 64
а одинаковый разделитель использовать никак?
19 июл 12, 16:52    [12889650]     Ответить | Цитировать Сообщить модератору
 Re: Дайте совет: как указать разделитель?  [new]
Vicont_rtf
Member

Откуда:
Сообщений: 64
Измени расширение файла на .csv
19 июл 12, 16:56    [12889679]     Ответить | Цитировать Сообщить модератору
 Re: Дайте совет: как указать разделитель?  [new]
Vicont_rtf
Member

Откуда:
Сообщений: 64
Измени расширение файла на .csv
19 июл 12, 17:03    [12889713]     Ответить | Цитировать Сообщить модератору
 Re: Дайте совет: как указать разделитель?  [new]
Ilham Kadyshev
Member

Откуда:
Сообщений: 8
Vicont_rtf,

Такая же проблема при CSV.
19 июл 12, 17:03    [12889714]     Ответить | Цитировать Сообщить модератору
 Re: Дайте совет: как указать разделитель?  [new]
Vicont_rtf
Member

Откуда:
Сообщений: 64
а драйвер 'Driver={Microsoft Text Driver на серверах одинаковый ?
19 июл 12, 17:05    [12889725]     Ответить | Цитировать Сообщить модератору
 Re: Дайте совет: как указать разделитель?  [new]
Ilham Kadyshev
Member

Откуда:
Сообщений: 8
Vicont_rtf
Измени расширение файла на .csv

Данный файл создан для примера. При использовании CSV на второй машине разделителем принимается запятая, а не точка с запятой.
19 июл 12, 17:05    [12889726]     Ответить | Цитировать Сообщить модератору
 Re: Дайте совет: как указать разделитель?  [new]
Ilham Kadyshev
Member

Откуда:
Сообщений: 8
Vicont_rtf
а драйвер 'Driver={Microsoft Text Driver на серверах одинаковый ?

Проверяли по версиям, абсолютно идентичны ((
19 июл 12, 17:06    [12889732]     Ответить | Цитировать Сообщить модератору
 Re: Дайте совет: как указать разделитель?  [new]
Ilham Kadyshev
Member

Откуда:
Сообщений: 8
Задача такая: заставить SQL 2008 принять за разделитель точку с запятой.
19 июл 12, 17:09    [12889744]     Ответить | Цитировать Сообщить модератору
 Re: Дайте совет: как указать разделитель?  [new]
Vicont_rtf
Member

Откуда:
Сообщений: 64
http://msdn.microsoft.com/en-us/library/bb177651.aspx
19 июл 12, 17:33    [12889853]     Ответить | Цитировать Сообщить модератору
 Re: Дайте совет: как указать разделитель?  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3059
изменте региональные настройки
или же создайте файл формата (fmt)
19 июл 12, 18:07    [12890011]     Ответить | Цитировать Сообщить модератору
 Re: Дайте совет: как указать разделитель?  [new]
Ilham Kadyshev
Member

Откуда:
Сообщений: 8
Vicont_rtf
http://msdn.microsoft.com/en-us/library/bb177651.aspx

К сожалению, по ссылке решается вопрос с Access.

HandKot
изменте региональные настройки
или же создайте файл формата (fmt)

Меняли региональные настройки по много раз, бесполезно.
Причем здесь файл формата FMT? Насколько понял FMT - это файл форматов данных FoxPro. А у меня ни разу ФоксПро не юзается.
19 июл 12, 18:16    [12890035]     Ответить | Цитировать Сообщить модератору
 Re: Дайте совет: как указать разделитель?  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3059
автор
Причем здесь файл формата FMT? Насколько понял FMT - это файл форматов данных FoxPro. А у меня ни разу ФоксПро не юзается.


а вот тут Вы ошибаетесь, точнее не про то читали
вот из бол

Д. Использование поставщика BULK функции OPENROWSET совместно с файлом форматирования для получения строк из текстового файла
В следующем примере используется файл форматирования для получения строк, разделенных символами табуляции, из файла values.txt, который содержит следующие данные:

Копировать код
1 Data Item 1
2 Data Item 2
3 Data Item 3


Файл форматирования values.fmt описывает столбцы в файле values.txt:

Копировать код
9.0
2
1 SQLCHAR 0 10 "\t" 1 ID SQL_Latin1_General_Cp437_BIN
2 SQLCHAR 0 40 "\r\n" 2 Description SQL_Latin1_General_Cp437_BIN
19 июл 12, 18:18    [12890048]     Ответить | Цитировать Сообщить модератору
 Re: Дайте совет: как указать разделитель?  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3059
и в догонку, где-то на форуме была подобная тема, там решилось все правкой реестра

но это уж очень кардинально
19 июл 12, 18:23    [12890068]     Ответить | Цитировать Сообщить модератору
 Re: Дайте совет: как указать разделитель?  [new]
Ilham Kadyshev
Member

Откуда:
Сообщений: 8
HandKot
и в догонку, где-то на форуме была подобная тема, там решилось все правкой реестра

но это уж очень кардинально


Я готов уже изменить в реестре, если бы знал как.
19 июл 12, 18:59    [12890160]     Ответить | Цитировать Сообщить модератору
 Re: Дайте совет: как указать разделитель?  [new]
hpv
Member

Откуда:
Сообщений: 153
Ilham Kadyshev,

Ну вы и мудрите)

Вам HandKot правильно указал на OPENROWSET с опцией BULK, там можно использовать файл форматирования.

Поставите в этом файле, как разделитель ; или , .
19 июл 12, 22:34    [12890569]     Ответить | Цитировать Сообщить модератору
 Re: Дайте совет: как указать разделитель?  [new]
hpv
Member

Откуда:
Сообщений: 153
Ilham Kadyshev,

OPENROWSET
19 июл 12, 22:35    [12890571]     Ответить | Цитировать Сообщить модератору
 Re: Дайте совет: как указать разделитель?  [new]
FantomGood
Member

Откуда: Херсон
Сообщений: 340
если нелья использовать Schema.in
то вот реест

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Text]

"Format"="CSVDelimited" поменять на "Delimited(,)"


Can be set to one of the following values: TabDelimited, CSVDelimited, Delimited (<single character>), or FixedLength. The delimiter specified for the Delimited file format can be any single character except a double quotation mark (").
19 июл 12, 23:18    [12890645]     Ответить | Цитировать Сообщить модератору
 Re: Дайте совет: как указать разделитель?  [new]
Ilham Kadyshev
Member

Откуда:
Сообщений: 8
FantomGood
если нелья использовать Schema.in
то вот реест

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Text]

"Format"="CSVDelimited" поменять на "Delimited(,)"


Can be set to one of the following values: TabDelimited, CSVDelimited, Delimited (<single character>), or FixedLength. The delimiter specified for the Delimited file format can be any single character except a double quotation mark (").


СПАСИБО!!! Именно то, что нужно. Тысячи тонн благодарности! )))
20 июл 12, 08:19    [12891210]     Ответить | Цитировать Сообщить модератору
 Re: Дайте совет: как указать разделитель?  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3059
Ilham Kadyshev

автор
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Text]
...
СПАСИБО!!! Именно то, что нужно. Тысячи тонн благодарности! )))


я так понял, мы не ищем лёгких путей
будте готовы, что у Вас где-то что-то отвалится (на сервере могут быть и другие приложения, которые занимаются импортом)
20 июл 12, 08:25    [12891229]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить