OLEDB и trim в select | |
---|---|
alex; Автор Сообщений: 2857 Откуда: Москва Дата регистрации: 23.11.2004 |
поискал не нашел
но походу trim в select через oledb из файлов.dbf не работает проверяли? Исправлено 1 раз(а). Последнее : alex;, 23.07.20 12:06 |
Re: OLEDB и trim в select | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
смотря какой trim и смотря что от него ожидается. varchar из обычных char полей он сам по себе не сделает, поэтому хвостовые пробелы никуда не денутся.
------------------ WBR, Igor |
Re: OLEDB и trim в select | |
---|---|
alex; Автор Сообщений: 2857 Откуда: Москва Дата регистрации: 23.11.2004 |
Поясню
в c#
т.е. если поле f1 char, то trim делать бессмысленно ? |
Re: OLEDB и trim в select | |
---|---|
Аспид Сообщений: 3475 Откуда: Москва Дата регистрации: 01.04.2005 |
Достаточно очевидно, поле в рекордсете не может быть переменной длины)))
Потому все приведется к самому длинному. Либо через cast, либо при обработке результата |
Re: OLEDB и trim в select | |
---|---|
alex; Автор Сообщений: 2857 Откуда: Москва Дата регистрации: 23.11.2004 |
Учитывая старый ADO спорный - тезис. |
Re: OLEDB и trim в select | |
---|---|
Аспид Сообщений: 3475 Откуда: Москва Дата регистрации: 01.04.2005 |
Как то считал это очевидным. Но возможно и ошибаюсь. И все же почти уверен, что это так. Чем может быть рекорсет, как ни некой структурой, у которой, как полагаю, жестко заданы параметры. Трудно представить себе поле филд в одной записи, длинной 10, а в другой 12 Исправлено 1 раз(а). Последнее : Аспид, 24.07.20 12:38 |
Re: OLEDB и trim в select | |
---|---|
alex; Автор Сообщений: 2857 Откуда: Москва Дата регистрации: 23.11.2004 |
а varchar?
|
Re: OLEDB и trim в select | |
---|---|
Аспид Сообщений: 3475 Откуда: Москва Дата регистрации: 01.04.2005 |
Именно это))) А варчар, это относительно новая фишка, и способ хранения данных. Получи выборку варчар с sql сервера на фокс. Поле будет длинной, самого длинного полученного Как минимум И кстати шарп это подтверждает. Убирать пробелы, надо при обработке конкретного значения поля(если надо) Исправлено 1 раз(а). Последнее : Аспид, 24.07.20 12:51 |
Re: OLEDB и trim в select | |
---|---|
alex; Автор Сообщений: 2857 Откуда: Москва Дата регистрации: 23.11.2004 |
или даже запрос из csv без фиксированной длины с разделителями
|
Re: OLEDB и trim в select | |
---|---|
alex; Автор Сообщений: 2857 Откуда: Москва Дата регистрации: 23.11.2004 |
по-моему это стереотип перешедший из фокса |
Re: OLEDB и trim в select | |
---|---|
Аспид Сообщений: 3475 Откуда: Москва Дата регистрации: 01.04.2005 |
Так проверь его на шарпе.
Получи конкретное значение, одно. Посмотри что с ним будет. Потом другое. По одной записи. Спор то, проверяется за пол часа |
Re: OLEDB и trim в select | |
---|---|
alex; Автор Сообщений: 2857 Откуда: Москва Дата регистрации: 23.11.2004 |
да, времени нет и прч...
обязательно проверю |
Re: OLEDB и trim в select | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Поскольку функция trim() это та же самая функция rtrim(), и она обрезает только хвостовые пробелы, а тип поля char предполагает строго фиксированный размер и все строки будут в нём дополнены пробелами до размера поля, то да - применять trim в запросе не имеет абсолютно никакого смысла. С другой стороны, существует версия VFP OLEDB провайдера от 9-го фокса, где уже есть varchar тип полей (которые не дополняются пробелами справа) и есть функция cast для преобразования типов, в т.ч. позволяющая получит varchar поле, то комбинация cast и rtrim уже не будет являться бессмысленной. Впрочем и для старых версий при помощи всяких хиртых трюков, например UNION с таблицей нужной структуры, можно добиться чтобы запрос преобразовал это поле в memo - а оно тоже не имеет фиксированного размера и не добивается ненужными пробелами. С другой стороны зачем делать какие-то trim на стороне фокса, если ненужные пробелы можно обрезать уже на стороне шарпа - при том не парясь по поводу конвертаций, тримов и версий провайдера. Вообще для банальной вычитки данных из dbf (особенно если это таблица формата досовского фокса, где нет бинарных полей - сплошь одни строки, даже для числовых полей) можно поискать и какой-нибудь низкоуровневый dbf-парсер (да даже и написать его не сверх-сложная задача), полностью убрав необходимость ставить какой-то там oledb провайдер, и получив заодно ещё и кроссплатформенное решение ------------------ WBR, Igor |
Re: OLEDB и trim в select | |
---|---|
alex; Автор Сообщений: 2857 Откуда: Москва Дата регистрации: 23.11.2004 |
Игорь, спасибо за ответы.
Я, да, сделал trim шарпе. Реализовал загрузку фиас из dbf Две таблицы, пакетами по 100к записей с trim в temp.csv и SqlBulkCopy на обычном компе с ограничением ОП MS SQL 8Гб - 54 минуты. Если есть возможность взглянуть - на сколько это "убого" получилось? github.com |
Re: OLEDB и trim в select | |
---|---|
alex; Автор Сообщений: 2857 Откуда: Москва Дата регистрации: 23.11.2004 |
это около 80млн записей Исправлено 1 раз(а). Последнее : alex;, 24.07.20 22:16 |
Re: OLEDB и trim в select | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Зачем тебе это? Устраивает, решает задачу, ну и радуйся Меньше знаешь - крепче спишь. ------------------ WBR, Igor |
Re: OLEDB и trim в select | |
---|---|
alex; Автор Сообщений: 2857 Откуда: Москва Дата регистрации: 23.11.2004 |
Да, вот задумался может на фоксе переписать.
И вызывать bulk через sqlcmd... |
Re: OLEDB и trim в select | |
---|---|
alex; Автор Сообщений: 2857 Откуда: Москва Дата регистрации: 23.11.2004 |
или напрямую вместо bulk...
|
Re: OLEDB и trim в select | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
mssql умеет же сам внешние данные через oledb получать.
------------------ WBR, Igor |
Re: OLEDB и trim в select | |
---|---|
alex; Автор Сообщений: 2857 Откуда: Москва Дата регистрации: 23.11.2004 |
вот, вот,
подумкаю еще а код на шарпах может Сергей(SType) потом как-нидь покритикует ... |
© 2000-2024 Fox Club  |