Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Импорт текстового файла (автоудаление пробелов). Баг или фича? / 21 сообщений из 21, страница 1 из 1
04.04.2016, 16:23
    #39207692
Casper2002
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт текстового файла (автоудаление пробелов). Баг или фича?
Доброе время суток,

Случайно наткнулся на проблему при импорте текстового файла в A2010 (в формате mdb). Если в конце текстового значения содержатся пробелы, то они автоматически удаляются.

Есть ли возможность отключения этой фичи?
...
Рейтинг: 0 / 0
04.04.2016, 16:39
    #39207710
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт текстового файла (автоудаление пробелов). Баг или фича?
Это CSV-стандарт. Если пробел в конце текстового поля является значимым символом, то значения обрамляются кавычками.
...
Рейтинг: 0 / 0
04.04.2016, 16:46
    #39207719
Casper2002
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт текстового файла (автоудаление пробелов). Баг или фича?
К сожалению у меня формат файла где текстовые значения не обрамляются кавычками. И что мне делать?
...
Рейтинг: 0 / 0
04.04.2016, 17:38
    #39207776
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт текстового файла (автоудаление пробелов). Баг или фича?
Casper2002что мне делать?
Ну, например, импортировать файл в таблицу с единственным полем типа текст, и потом запросом распарсить в таблицу данных.
Или организовать программный (VBA) парсинг текста и заполнение таблицы.
...
Рейтинг: 0 / 0
05.04.2016, 09:47
    #39208096
Casper2002
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт текстового файла (автоудаление пробелов). Баг или фича?
Akina,

Короче жёсткий хардкор...
...
Рейтинг: 0 / 0
05.04.2016, 10:26
    #39208125
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт текстового файла (автоудаление пробелов). Баг или фича?
Ну а кто виноват, что данные тебе выгружаются в таком виде?
...
Рейтинг: 0 / 0
05.04.2016, 11:04
    #39208159
Импорт текстового файла (автоудаление пробелов). Баг или фича?
Casper2002, так работает обычное текстовое поле в Аксе. Все завершающие пробелы удаляются. ИМХО, и кавычки в файле не спасут.
Может расскажете, какой скрытый смысл в этих пробелах и их количестве?
...
Рейтинг: 0 / 0
05.04.2016, 11:20
    #39208172
Casper2002
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт текстового файла (автоудаление пробелов). Баг или фича?
Анатолий ( Киев ),

Скрытый смысл я описал в топике (удаляется часть оригинального текста).

Пытаюсь считать файл построчно в таблицу.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
    FilePath = CurrentProject.path + "\test_spaces.txt"
    
    Dim TextLine, rst As DAO.Recordset, db As DAO.Database
    Dim k
    CurrentDb.Execute "delete * from TextFile"
    
    Set db = CurrentDb
    Set rst = db.OpenRecordset("select * from TextFile")
    

        Open FilePath For Input As #1 ' Îòêðûâàåò ôàéë.
        k = 0
        Do While Not EOF(1) ' Öèêë äî êîíöà ôàéëà.
            k = k + 1
            Line Input #1, TextLine ' ×èòàåò ñòðîêó â ïåðåìåííóþ.
            rst.AddNew
            rst(0) = TextLine
            rst.Update
        Loop
        Close #1    ' Çàêðûâàåò ôàéë.



Но наткнулся на новые грабли. Этот код нормально работает если файл имеет стандартные переносы chr(13)+chr(10). у меня оригинальный файл приходит по FTP и переносом является только chr(13). Таким образом вышеуказанный код заганяет содержимое всего файла в одну запись.

Код вида

Код: vbnet
1.
2.
3.
4.
path = CurrentProject.path + "\": file_name = "test_spaces.txt"
s_sql = "SELECT * INTO tttt FROM [" + file_name + "] In '" + path + "\' [text;]"
Debug.Print s_sql
CurrentDb.Execute s_sql



тоже не дал нужного результата так как создает множество полей, вместо того чтобы занести все в одно поле.
...
Рейтинг: 0 / 0
05.04.2016, 11:23
    #39208174
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт текстового файла (автоудаление пробелов). Баг или фича?
Casper2002наткнулся на новые грабли. Этот код нормально работает если файл имеет стандартные переносы chr(13)+chr(10). у меня оригинальный файл приходит по FTP и переносом является только chr(13). Таким образом вышеуказанный код заганяет содержимое всего файла в одну запись.
Насколько велик файл? может, пойти по пути
Код: vbnet
1.
temp() = split(fso.getfile, chr(13))


?
...
Рейтинг: 0 / 0
05.04.2016, 11:33
    #39208186
Casper2002
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт текстового файла (автоудаление пробелов). Баг или фича?
Максимальный размер файла из встреченных - 20Мб
...
Рейтинг: 0 / 0
05.04.2016, 11:43
    #39208203
Лапух
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт текстового файла (автоудаление пробелов). Баг или фича?
Casper2002...Максимальный размер файла из встреченных - 20Мб...
Надо администрацию просить, дабы можно было архивчики по 5-10 Мб разрешили прикладывать, а не 100кб.
У меня вот многие примеры весят в архиве по 1-3Мб и сюда не лезут, разбивать лень, а спросить хотса как лучше и правильно сотворить.
Приходится на другие форумы лезть и там на примере злободневные вопросики задавать.
Помошники хоть и там не лапухи, но как видю здесь больше Не лапухов.
...
Рейтинг: 0 / 0
05.04.2016, 11:56
    #39208217
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт текстового файла (автоудаление пробелов). Баг или фича?
Casper2002Пытаюсь считать файл построчно в таблицу

Это лишнее, файл прекрасно структурирован и есть стандартные разделители...
Тупо мастером: Связь с таблицами > Выбрать тип TXT файлы > Указать путь к файлу > Нажать раз 5 далее
и получишь прилинкованную таблицу из файла, а если там будут кавычки - то и пробелы свои сохранишь...

Потом всего-то делов- подставляй другие файлы вместо этого и читай (линковать больше ничего не нужно)
...
Рейтинг: 0 / 0
05.04.2016, 12:07
    #39208228
Casper2002
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт текстового файла (автоудаление пробелов). Баг или фича?
vmag,

test_spaces.txt не совсем тот формат.
...
Рейтинг: 0 / 0
05.04.2016, 12:55
    #39208299
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт текстового файла (автоудаление пробелов). Баг или фича?
Casper200220Мб
Копейки. Грузи целиком и не заморачивайся.
vmagфайл прекрасно структурирован
Увы. У него вроде как концевые пробелы строк значащие...

Casper2002 , проверил - концевые пробелы при любом импорте тримаются. Если они всё-таки значащие - единственным выходом вижу дополнительное поле, которое будет хранить либо оригинальную длину с учётом хвостовых пробелов, либо количество этих пробелов. Оба варианта в принципе имеют свои недостатки.
...
Рейтинг: 0 / 0
05.04.2016, 12:56
    #39208300
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт текстового файла (автоудаление пробелов). Баг или фича?
Вспомнил - видел ещё оригинала, который вешал на хвост значению CHR(0). И чего-то он там с этими нулями хлебнул...
...
Рейтинг: 0 / 0
05.04.2016, 13:40
    #39208362
Импорт текстового файла (автоудаление пробелов). Баг или фича?
Casper2002у меня оригинальный файл приходит по FTP и переносом является только chr(13). Таким образом вышеуказанный код заганяет содержимое всего файла в одну запись. Есть такая штука ADODB.Stream. Она позволяет читать файлы не только с разными разделителями строк, но и в разной кодировке.
Но, опять же, при вставке в текстовое поле все завершающие пробелы будут удалены.
...
Рейтинг: 0 / 0
05.04.2016, 14:22
    #39208399
Casper2002
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт текстового файла (автоудаление пробелов). Баг или фича?
Анатолий ( Киев ),

При вставке в текстовое поле я добавлю спец знак в конце (по типу того как предлагает vmag).

Как раз через ADODB.Stream только что удалось считать файл как мне нужно. Выкладываю код (думаю кому-то тоже пригодиться):

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
   FileName = "test_spaces2.txt"
   FilePath = CurrentProject.path + "\"
   
   
  CurrentDb.Execute "delete * from TextFile"
  
  Dim stm As New ADODB.Stream
  Dim RS As New ADODB.Recordset
  

  stm.Type = adTypeText
  stm.Open
  stm.LoadFromFile FilePath + FileName
  stm.Charset = "windows-1251"
  stm.LineSeparator = adLF
  Set rst = CurrentDb.OpenRecordset("select * from TextFile")
  
  While Not stm.EOS
    rst.AddNew
    rst(0) = stm.ReadText(adReadLine)
    rst.Update
  Wend
  
  rst.Close: Set rst = Nothing
  stm.Close
  DoCmd.OpenTable "TextFile"
...
Рейтинг: 0 / 0
05.04.2016, 14:46
    #39208425
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт текстового файла (автоудаление пробелов). Баг или фича?
Casper2002,

я однажды столкнулась с подобным полем в таблице(не моей) ---кто то выложил на форум
фильтр в запросе не работал, отказывался
...
Рейтинг: 0 / 0
05.04.2016, 14:51
    #39208432
Casper2002
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт текстового файла (автоудаление пробелов). Баг или фича?
ПЕНСИОНЕРКА,

Скорее всего тип поля Memo был.
...
Рейтинг: 0 / 0
05.04.2016, 14:56
    #39208439
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт текстового файла (автоудаление пробелов). Баг или фича?
Casper2002test_spaces.txt не совсем тот формат.

test_spaces2.txt точно также связывается в виде таблицы как test_spaces.txt (проверил)

Дело хозяйское, только если файлы по 20 мб и их нужно часто загружать, размер БД может каждый импорт
увеличиваться не оправдано примерно на те же 20 мб...

в случае прилинковки файла такого не будет, ибо тупо подставляется нужный файл под линк и всё...
...
Рейтинг: 0 / 0
05.04.2016, 15:26
    #39208475
Casper2002
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт текстового файла (автоудаление пробелов). Баг или фича?
Анатолий ( Киев ),

Как приятный бонус оказалось, что мой последний код не только считывает данные AsIs но при сохранении в поле они остаются в том же виде. Выявилось, что MS Access не только автоматом удалял пробелы в конце текста, но также и вначале.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Импорт текстового файла (автоудаление пробелов). Баг или фича? / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]