4 / 4 / 0
Регистрация: 09.01.2014
Сообщений: 130
|
||||||
1 | ||||||
Импорт текстовых файлов средствами VBA. Ошибка около конструкции IN20.06.2015, 16:50. Показов 3060. Ответов 31
Метки нет (Все метки)
Здравствуйте, уважаемые форумчане!
Возможно я ошибся разделом. Если это так, то я не специально. Вопрос следующий. Каким образом составить запрос на выборку к текстовому файлу (txt) с последующей вставкой в MS SQL? Сразу отвечу на некоторые возможные вопросы от вас. - Возможность импортировать напрямую в MS SQL отсутствует (bulk insert и прочее). Я не админ и таких прав мне не дадут. - Импортировать построчно не вариант. Каждый файл весит по 1,5 ГБ. Более 1 млн строк. Очень долго. Такой запрос говорит, что "ошибка синтаксиса около конструкции in..."
Если этот же запрос делать с базой access все импортируется идеально. Заранее всем спасибо за помощь. С уважением, Александр.
0
|
20.06.2015, 16:50 | |
Ответы с готовыми решениями:
31
Импорт текстовых файлов в таблицы Access через VBA Импорт таблиц из Excel в Access средствами VBA Импорт листа из экселя в отчет access средствами vba Импорт текстовых файлов .doc, .docx |
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
|
|
20.06.2015, 17:22 | 2 |
Не скажу в чем дело с сервером, вроде на вид все правильно.
Я бы не стал особо заморачиваться и сделал через промежуточную аксовскую таблицу. Т.е. из текстового файла импортировать в таблицу Access, а из нее уже на сервер. Разница во времени будет несущественная, так как основное время уйдет на импорт из текстового файла.
1
|
4 / 4 / 0
Регистрация: 09.01.2014
Сообщений: 130
|
|
20.06.2015, 17:48 [ТС] | 3 |
mobile, спасибо за проявленный интерес к моей теме. Я так и пытался сделать, но когда access разбухает до 2 ГБ, он обваливается. Пытался грузить в одну БД access, вторую использовал как интерфейс. Потом программно удалял из второй БД данные после экспорта, программно сжимал и по новой (файлов много надо грузить). Но все это похоже на "танцы с бубном". Думал может есть решение практичное и элегантное.
Буду признателен за любую помощь в моем вопросе. С уважением, Александр.
0
|
8860 / 5908 / 585
Регистрация: 27.03.2013
Сообщений: 19,575
|
|
20.06.2015, 17:52 | 4 |
1
|
4 / 4 / 0
Регистрация: 09.01.2014
Сообщений: 130
|
|
20.06.2015, 19:14 [ТС] | 6 |
kmv-puh, спасибо за ответ. Постом выше Вашего я описал, что делал это программно. Файлов много, поэтому после обработки данных и экспорта в другую таблицу, удалял данные из, так сказать, временной БД, програмно сжимал, потом обрабатывал следующий файл и так далее.
mobile, прилинковать таблицу access к серверу? У меня в таблицу access не уместятся все данные. Если я Вас не правильно понял, объясните немного подробней, что Вы имели ввиду. Вопрос остается открытым. Буду признателен за любые мысли. С уважением, Александр.
1
|
17487 / 7249 / 1651
Регистрация: 21.06.2012
Сообщений: 13,865
|
|
20.06.2015, 19:19 | 7 |
1
|
8860 / 5908 / 585
Регистрация: 27.03.2013
Сообщений: 19,575
|
|
20.06.2015, 19:41 | 8 |
Я конечнго не супер Асс, но просто слышал краем ужа, вот все возможные методы как побороть беду обычно и перечисляю.
Хотя вот вижу, магистры подключились, по любому поборете.
1
|
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
|
|
20.06.2015, 20:48 | 9 |
Ровно наоборот! :-) Серверную таблицу в MS Access.
Сейчас попробовал. Стоит MS SQL Server 2008 R2. Вот точно по Вашей схеме, но с прилинкованной в MS Access серверной таблицей, запрос прошел, данные добавились. Правда, не полуторагигабайтный файл, но как мне кажется, размер значения не имеет.
1
|
4 / 4 / 0
Регистрация: 09.01.2014
Сообщений: 130
|
|
20.06.2015, 22:10 [ТС] | 10 |
ltv_1953, спасибо, что присоединились к моему вопросу.
kmv-puh, в любом случае, спасибо за мысли. mobile, сделать экспорт из access в MS SQL с прилинковыванием таблицы? Не до конца понял. Что мне это даст? В access у меня не будет обваливаться приложение? У меня проходит импорт в MS SQL, а access, как проводник в этом деле. Мне главное, чтобы я смог грузить данные в MS SQL из access. Такая вот задача. Вопрос остается открытым. Спасибо всем за участие. С уважением, Александр. Добавлено через 12 минут Так же прошу посмотреть пример запроса в этой теме (Запрос максимальной суммы по счету и ИНН). Как можно сделать его под access? (с iPad почему-то не работает тег гиперссылки). Заранее всем спасибо. С уважением, Александр.
0
|
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
|
||||||
20.06.2015, 23:02 | 11 | |||||
alexandrstegnin, прилинкованная таблица НЕ содержит данные в Access. Данные на сервере как были, так и остаются. И акс будет именно тем, что Вы хотите: "как проводник в этом деле". Линкование таблицы создает подключение к источнику, но не импортирует файл к себе. Таким образом, создав коннекшен к SQL-server, Вы можете добиться цели, но уже не серверными средствами, а с помощью протокола ODBC. Собственно, Вы им уже пользуетесь, когда создали ДСН к текстовому файлу, но теперь я предлагаю сделать и экспорт в SQL-server средствами ODBC, а не серверными.
Попробуйте вариант на тестовой таблице сервера. Если получится, то на боевой. Прилинковать серверную таблицу к аксу несложно. Есть мастер, он поможет. Добавлено через 49 минут В предположении, что Ваш первый запрос в теме был правильный. Только не было инн. Можно добавить коррелированный подзапрос по сумме и счету. Возможно подзапрос придется связать еще с FirstName. Но это Вам виднее
1
|
4 / 4 / 0
Регистрация: 09.01.2014
Сообщений: 130
|
|
21.06.2015, 17:58 [ТС] | 12 |
mobile, спасибо. Прилинковал таблицу, загрузил данные, попробовал вручную добавить - работает и access не разбухает. Очень интересное решение. Поиграюсь еще с настройками импорта и будет просто восхитительно.
По поводу запроса: Хотел уточнить, но видимо забыл. Есть запрос в посте 5 и в посте 10 (Запрос максимальной суммы по счету и ИНН). Вопрос о том, как скорректировать мой запрос из поста 5 или как переделать запрос из поста 10 (access не распознает row_number, как я понял). Если Вас не затруднит помочь в этом вопросе, буду признателен. Заранее спасибо. С уважением, Александр.
0
|
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
|
|
22.06.2015, 18:26 | 13 |
Запрос достаточно сложный и для полного понимания хотелось бы видеть БД. Хотя бы фрагмент с небольшим количеством данных. Но таких, которые нужны для решения задачи.
Если там секретные или конфиденциальные данные, замените текст на соответствующую абракадабру. В числах, как правило, секретов нет. Акцессную таблицу можно получить из серверной запросом Select * Into [таблица] from [сервернаятаблица]
1
|
4 / 4 / 0
Регистрация: 09.01.2014
Сообщений: 130
|
|
22.06.2015, 21:10 [ТС] | 14 |
mobile, прикладываю кусок базы. Некоторые данные полностью удалены, они в отборе не участвуют. Оставил искаженные данные, но полностью отвечают требованиям, которые мне нужны для запроса.
Что нужно: 1. Не учитывать в отборе записи, у которых ИНН НЕ пусто и больше 0. 2. Учитывать только те записи, в которых код блокировки = 0 3. Не учитывать записи, если тип клиента не 207, 217, 218. Дальше нужно выбрать данные: 4. Если с одного и того же ИНН поступила на один и тот же счет одинаковая сумма, то не учитывать ту запись, у которой дата выдачи меньшая. 5. Далее сложить суммы поступившие с одного и того же ИНН на один и тот же счет, но только с разными суммами. 6. Далее выбрать максимальную сумму, поступившую на один и тот же счет от одного и того же ИНН и показать все сопутствующие данные. Если что-то не совсем понятно объяснил, готов прокомментировать. Заранее спасибо за помощь. С уважением, Александр.
0
|
4 / 4 / 0
Регистрация: 09.01.2014
Сообщений: 130
|
|
22.06.2015, 21:17 [ТС] | 15 |
Вложение забыл...
0
|
4 / 4 / 0
Регистрация: 09.01.2014
Сообщений: 130
|
|
22.06.2015, 21:36 [ТС] | 17 |
odbcsql, спасибо за поправку. Читать в редакции "Учитывать только те записи у которых ИНН НЕ пусто и больше 0".
0
|
17487 / 7249 / 1651
Регистрация: 21.06.2012
Сообщений: 13,865
|
|
22.06.2015, 22:12 | 18 |
1
|
4 / 4 / 0
Регистрация: 09.01.2014
Сообщений: 130
|
|
23.06.2015, 20:36 [ТС] | 20 |
ltv_1953, спасибо, что присоединились к обсуждению. Хотел дать как можно больше подробностей.
mobile, всё равно не то. Я добавил в файл таблицу Itog, это то, что должно получиться на выходе. Возможно я не самый лучший "объясняльщик". Если не затруднит, посмотрите. Голову всю сломал... 5 день сижу и ничего не могу поделать. Что-то постоянно не хватает. Заранее спасибо всем за помощь. С уважением, Александр.
0
|
23.06.2015, 20:36 | |
23.06.2015, 20:36 | |
Помогаю со студенческими работами здесь
20
Импорт офисных файлов в таблицы Access через VBA (БД почтовых файлов) Импорт многомиллионных текстовых файлов в MS Excel средствами мастера импорта Ошибка: неправильный синтаксис около конструкции Импорт текстовых файлов в Access Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |