|
Чтение из .CSV. Не найти простую команду.
|
|||
---|---|---|---|
#18+
Друзья, добрый день! Всевышний столкнул меня с вопросом чтения данных из CSV-файла с использованием "Micrisoft Text Driver". Само прямое чтение налажено. Но в процессе чтения необходимо сделать простую замену некоторых символов в полученных строках. В частности, символ 'S' следует заменить на '91'. Я с совершенно умным видом стал применять REPLACE. Оказалось, что драйвер не знает такой команды. Я стал применять LEN, тоже неизвестная команда для драйвера. Какие-то операторы он понимает, например LEFT... Но достаточный набор команд мне не удалось отыскать. Попытался потыкаться, решения так и не нашел. Прошу помощи! Как узнать, какие есть доступные команды-аналоги у этого драйвера и есть ли они вообще? Спасибо заранее! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 05:16 |
|
Чтение из .CSV. Не найти простую команду.
|
|||
---|---|---|---|
#18+
Begimot441, Можно залить файл в staging-таблицу как есть, а потом уже делать преобразования нормальным SQL. На выходе будет отдельная таблица с корректными данными. Если файл большой и льется долго, то я бы сделал заливку через SSIS, в котором обработка делается промежуточным Script Transformation. Там уже на C# можно эти строки как угодно гнуть, и без промежуточной стадии сразу заливать в базу конечный результат. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 05:50 |
|
Чтение из .CSV. Не найти простую команду.
|
|||
---|---|---|---|
#18+
Ennor Tiegael, Спасибо за вариант! Уточните, пож-та, если в моем случае нет на сервере никакой БД, чтобы там обустроить это временное хранилище, то как и чем проще и лучше выполнить это первичное чтение? Уж явно не этим туповатым драйвером? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 06:32 |
|
Чтение из .CSV. Не найти простую команду.
|
|||
---|---|---|---|
#18+
Begimot441 Ennor Tiegael, Спасибо за вариант! Уточните, пож-та, если в моем случае нет на сервере никакой БД, чтобы там обустроить это временное хранилище, то как и чем проще и лучше выполнить это первичное чтение? Уж явно не этим туповатым драйвером? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 08:38 |
|
Чтение из .CSV. Не найти простую команду.
|
|||
---|---|---|---|
#18+
Ennor Tiegael, У меня задача немного специфическая. Я читаю информацию в специализированное приложение. Это приложение умеет коннектиться по ODBC к БД посредством SQL-запросов. Мне выпало настроить чтение из CVS в это приложение. Посоветовали использовать стандартный драйвер "Micrisoft Text Driver". Получается, без третьей сущности, которая прочитает CSV и положит в staging-таблицу не обойтись? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 08:49 |
|
Чтение из .CSV. Не найти простую команду.
|
|||
---|---|---|---|
#18+
Begimot441 В частности, символ 'S' следует заменить на '91' Раз есть файл, так замени в исходном файле. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 08:59 |
|
Чтение из .CSV. Не найти простую команду.
|
|||
---|---|---|---|
#18+
crutchmaster Begimot441 В частности, символ 'S' следует заменить на '91' Раз есть файл, так замени в исходном файле. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 09:37 |
|
Чтение из .CSV. Не найти простую команду.
|
|||
---|---|---|---|
#18+
crutchmaster, Спасибо, но этот вариант не подходит. Файлы периодически обновляются. Таким примитивным образом организован информационный обмен данными между системами. Т.е., моя система-приемник периодически читает данные из конкретного файла в конкретной папке. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 10:03 |
|
Чтение из .CSV. Не найти простую команду.
|
|||
---|---|---|---|
#18+
Begimot441, только через техническую таблицу. Эти вещи вообще практически никогда не используются так, чтобы из внешнего источника сразу в целевые таблицы. Даже целая подотрасль образовалась, ETL. Именно для этого. И там постоянно подготовка и очищение данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 11:18 |
|
Чтение из .CSV. Не найти простую команду.
|
|||
---|---|---|---|
#18+
Begimot441, используй JET/ACE провайдер REPLACE-а они, правда, тоже "не знают", но про все остальные строковые функции (len, instr, mid, left, right) - "в курсе" ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 11:53 |
|
Чтение из .CSV. Не найти простую команду.
|
|||
---|---|---|---|
#18+
Кесарь, А можно уточнить, как (в каком виде) проще сделать техническую таблицу? Необходимо отдельную БД разворачивать или можно проще (как то в винде)? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 12:07 |
|
Чтение из .CSV. Не найти простую команду.
|
|||
---|---|---|---|
#18+
court, Можно ссылку на этого зверя (сходу не получились найти)? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 12:07 |
|
Чтение из .CSV. Не найти простую команду.
|
|||
---|---|---|---|
#18+
Begimot441 Т.е., моя система-приемник периодически читает данные из конкретного файла в конкретной папке. Ну так сделай замену, когда вычитываешь, в чём проблема? Ты не можешь работать непосредственно с файловым стримом? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 12:10 |
|
Чтение из .CSV. Не найти простую команду.
|
|||
---|---|---|---|
#18+
Begimot441 court, Можно ссылку на этого зверя (сходу не получились найти)? https://www.connectionstrings.com/textfile/ ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 12:10 |
|
Чтение из .CSV. Не найти простую команду.
|
|||
---|---|---|---|
#18+
Begimot441 Кесарь, А можно уточнить, как (в каком виде) проще сделать техническую таблицу? Необходимо отдельную БД разворачивать или можно проще (как то в винде)? В максимально повторяющем вид исходных данных. Как минимум эта таблица должна иметь тоже кол-во столбцов, что и файл. Для всякого мусора как правило используются поля типа varchar(8000). Но это конечно зависит от данных и от того, понимает ли ваш драйвер, что конкретная колонка например содержит целочисленные данные (для CSV всё надо лить как строковые, конечно). И вот когда залили вы эти данные, то начинайте их преобразовывать и перезаливать во вторую техническую таблицу, которая будет содержать уже подготовленные данные. Такое-то поле в такой-то тип данных, другое поле в другой тип данных и т.п. по всем полям. Можно создать индексы. Затем уже начинайте анализировать и разбирать эти данные. Тут уж общих рецептов нет. Всё зависит от конечного назначения это инфы. Если у вас она должна породить некий рабочий цикл с созданием новых сущностей, запуском процедур, раздачей прав допуска на новые объекты и т.п., то тут уж разбор строго построчный при помощи курсора. Если же нужно просто разложить по связанным таблицам, то тут уже обычными запросами. P.S. "Разворачивать БД" - это слишком сильно сказано. Создайте на том же сервере БД Garbage и пишите туда всё, что хотите. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 12:27 |
|
Чтение из .CSV. Не найти простую команду.
|
|||
---|---|---|---|
#18+
"У меня задача немного специфическая. Я читаю информацию в специализированное приложение. Это приложение умеет коннектиться по ODBC к БД посредством SQL-запросов. Мне выпало настроить чтение из CVS в это приложение." 1.Обмен данными между различными системами с помощью CVS вполне нормально. 2.Зачем куда-то коннектиться, если нужно читать файл в приложение? CVS – это самый обычный текстовый файл. В приложении, если вы его контролируете, открыли этот файл, прочитали из него строку стандартными механизмами и делайте с этой строкой все, что вам хочется. Зачем использовать для этого посредники: "туповатый драйвер" и соединение ODBC? 3.Ваш CVS можно, как вариант, прочитать из БД так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Посмотрели на результат, если преобразования выполняются правильно, то, я надеюсь, вы справитесь с дальнейшими действиями. В этом случае я даже не знаю, какой драйвер используется. Да простит меня alex222, если я сморозил глупость. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 13:06 |
|
Чтение из .CSV. Не найти простую команду.
|
|||
---|---|---|---|
#18+
Wlr-l, спсб! Век живи, век учись. Оказывается CSV тоже можно задавать формат. Ну да, если подумать, то это логично. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 13:11 |
|
Чтение из .CSV. Не найти простую команду.
|
|||
---|---|---|---|
#18+
Wlr-l, Спасибо! 1. Буду иметь в виду. 2. К сожалению, это приложение я не контролирую. Я имею его в пользовании, но дописать такую элементарную вещь как "прочитали из него строку стандартными механизмами и ... " сделать не могу(( 3. Поясните, пож-та, что делает этот запрос? Для чего "файл описания"? Заранее спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 13:42 |
|
Чтение из .CSV. Не найти простую команду.
|
|||
---|---|---|---|
#18+
Begimot441, В документации MS SQL Server есть раздел, посвященный openrowset. Там много чего интересного можно найти, особенно с сочетании со словом bulk. Лучше и проще, чем там написано, я рассказать не смогу. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 13:54 |
|
Чтение из .CSV. Не найти простую команду.
|
|||
---|---|---|---|
#18+
Wlr-l, Понял, согласен, обязательно изучу. Последний вопрос. Верно ли я понимаю, что конструкция, которая представлена Вами позволит мне читать данные именно посредством указанного драйвера (который я обозвал "туповатым")? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 14:00 |
|
Чтение из .CSV. Не найти простую команду.
|
|||
---|---|---|---|
#18+
Begimot441, Я сразу признался: "В этом случае я даже не знаю, какой драйвер используется". И зачем мне знать детали, если нужно загрузить данные с их модификацией при загрузке? Да, забыл сказать, что я привел пример, взяв кусочек из своего запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 14:06 |
|
|
start [/forum/topic.php?fid=46&fpage=24&tid=1684674]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
29ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
others: | 295ms |
total: | 424ms |
0 / 0 |