SQL импорт из txt файла
nerv
Дата: Вторник, 16.04.2013, 01:50 |
Сообщение № 1
Группа: Редакторы
Ранг: Обитатель
Сообщений: 431
Всем привет! Не работает такая конструкция: [vba]Код
Sub Example() Set objConnection = CreateObject("ADODB.Connection") Set objRecordset = CreateObject("ADODB.Recordset") strPathtoTextFile = "с:\1\" objConnection.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _ "Data Source=" & strPathtoTextFile & ";" & _ "Extended Properties=""text;HDR=no;Format=TabDelimited""" objRecordset.Open "SELECT * FROM test.txt", objConnection Range("A1").CopyFromRecordset objRecordset objRecordset.Close objConnection.Close End Sub
[/vba] текстовый файл вида [vba][/vba] читается как [vba][/vba] т.е. данные не разбиваются по ячейкам. Подозреваю, что проблема в файле Schema.ini , которого у меня нет (Win7 x64). Он у кого-нибудь имеется? Если да, то где? Спасибо.
Всем привет! Не работает такая конструкция: [vba]Код
Sub Example() Set objConnection = CreateObject("ADODB.Connection") Set objRecordset = CreateObject("ADODB.Recordset") strPathtoTextFile = "с:\1\" objConnection.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _ "Data Source=" & strPathtoTextFile & ";" & _ "Extended Properties=""text;HDR=no;Format=TabDelimited""" objRecordset.Open "SELECT * FROM test.txt", objConnection Range("A1").CopyFromRecordset objRecordset objRecordset.Close objConnection.Close End Sub
[/vba] текстовый файл вида [vba][/vba] читается как [vba][/vba] т.е. данные не разбиваются по ячейкам. Подозреваю, что проблема в файле Schema.ini , которого у меня нет (Win7 x64). Он у кого-нибудь имеется? Если да, то где? Спасибо. nerv
Чебурашка стал символом олимпийских игр. А чего достиг ты? Тишина - самый громкий звук YM 41001156540584 / WM WMR R21924176233 https://github.com/nervgh/vba
Сообщение отредактировал nerv - Вторник, 16.04.2013, 01:53
Ответить
Сообщение Всем привет! Не работает такая конструкция: [vba]Код
Sub Example() Set objConnection = CreateObject("ADODB.Connection") Set objRecordset = CreateObject("ADODB.Recordset") strPathtoTextFile = "с:\1\" objConnection.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _ "Data Source=" & strPathtoTextFile & ";" & _ "Extended Properties=""text;HDR=no;Format=TabDelimited""" objRecordset.Open "SELECT * FROM test.txt", objConnection Range("A1").CopyFromRecordset objRecordset objRecordset.Close objConnection.Close End Sub
[/vba] текстовый файл вида [vba][/vba] читается как [vba][/vba] т.е. данные не разбиваются по ячейкам. Подозреваю, что проблема в файле Schema.ini , которого у меня нет (Win7 x64). Он у кого-нибудь имеется? Если да, то где? Спасибо. Автор - nerv Дата добавления - 16.04.2013 в 01:50
_Boroda_
Дата: Вторник, 16.04.2013, 13:19 |
Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16714
Репутация:
6503
±
Замечаний:
±
2003; 2007; 2010; 2013 RUS
Попробуй так (правда, я не уверен) Создай его сам и положи В ТУ ЖЕ ПАПКУ! примерно так [vba]Код
[test.txt] ColNameHeader=False CharacterSet=ANSI Format=Delimited( ) MaxScanRows=0 DecimalSymbol=.
[/vba] [test.txt] имя файла ColNameHeader=False наличие заголовка CharacterSet=ANSI кодировка ANSI 1251, DOS 866, ... Format=Delimited( ) в скобках пишем разделитель MaxScanRows=0 кол-во строк, анализируемое для определения типа полей (0 - весь файл) DecimalSymbol=. десятичный разделитель
Попробуй так (правда, я не уверен) Создай его сам и положи В ТУ ЖЕ ПАПКУ! примерно так [vba]Код
[test.txt] ColNameHeader=False CharacterSet=ANSI Format=Delimited( ) MaxScanRows=0 DecimalSymbol=.
[/vba] [test.txt] имя файла ColNameHeader=False наличие заголовка CharacterSet=ANSI кодировка ANSI 1251, DOS 866, ... Format=Delimited( ) в скобках пишем разделитель MaxScanRows=0 кол-во строк, анализируемое для определения типа полей (0 - весь файл) DecimalSymbol=. десятичный разделитель _Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение Попробуй так (правда, я не уверен) Создай его сам и положи В ТУ ЖЕ ПАПКУ! примерно так [vba]Код
[test.txt] ColNameHeader=False CharacterSet=ANSI Format=Delimited( ) MaxScanRows=0 DecimalSymbol=.
[/vba] [test.txt] имя файла ColNameHeader=False наличие заголовка CharacterSet=ANSI кодировка ANSI 1251, DOS 866, ... Format=Delimited( ) в скобках пишем разделитель MaxScanRows=0 кол-во строк, анализируемое для определения типа полей (0 - весь файл) DecimalSymbol=. десятичный разделитель Автор - _Boroda_ Дата добавления - 16.04.2013 в 13:19
nerv
Дата: Вторник, 16.04.2013, 14:33 |
Сообщение № 3
Группа: Редакторы
Ранг: Обитатель
Сообщений: 431
_Boroda_ , спасибо. Почитал инет, все так, как ты написал. Одна маленькая проблема - не работает Самое интересное, что если изменить разделитель на любой другой и прописать это в строке подключения, то все хорошо.
_Boroda_ , спасибо. Почитал инет, все так, как ты написал. Одна маленькая проблема - не работает Самое интересное, что если изменить разделитель на любой другой и прописать это в строке подключения, то все хорошо.nerv
Чебурашка стал символом олимпийских игр. А чего достиг ты? Тишина - самый громкий звук YM 41001156540584 / WM WMR R21924176233 https://github.com/nervgh/vba
Ответить
Сообщение _Boroda_ , спасибо. Почитал инет, все так, как ты написал. Одна маленькая проблема - не работает Самое интересное, что если изменить разделитель на любой другой и прописать это в строке подключения, то все хорошо.Автор - nerv Дата добавления - 16.04.2013 в 14:33
_Boroda_
Дата: Вторник, 16.04.2013, 15:34 |
Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 16714
Репутация:
6503
±
Замечаний:
±
2003; 2007; 2010; 2013 RUS
У меня твой код вообще работать не хочет. Ругается на objConnection.Open и библиотеку ADO не хочет подключать. Так что проверить не мог.Цитата (nerv )
изменить разделитель на любой другой и прописать это в строке подключения
А это была первая мысль - написать ...text;HDR=no;Format=Delimited( )", но проверить не мог, да и подумал, что жизнь тебе не мила без ини-шника.
У меня твой код вообще работать не хочет. Ругается на objConnection.Open и библиотеку ADO не хочет подключать. Так что проверить не мог.Цитата (nerv )
изменить разделитель на любой другой и прописать это в строке подключения
А это была первая мысль - написать ...text;HDR=no;Format=Delimited( )", но проверить не мог, да и подумал, что жизнь тебе не мила без ини-шника. _Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение У меня твой код вообще работать не хочет. Ругается на objConnection.Open и библиотеку ADO не хочет подключать. Так что проверить не мог.Цитата (nerv )
изменить разделитель на любой другой и прописать это в строке подключения
А это была первая мысль - написать ...text;HDR=no;Format=Delimited( )", но проверить не мог, да и подумал, что жизнь тебе не мила без ини-шника. Автор - _Boroda_ Дата добавления - 16.04.2013 в 15:34
nerv
Дата: Пятница, 19.04.2013, 13:50 |
Сообщение № 5
Группа: Редакторы
Ранг: Обитатель
Сообщений: 431
Цитата (_Boroda_ )
У меня твой код вообще работать не хочет.
подозреваю, что надо заменить это [vba]Код
"Provider=Microsoft.ACE.OLEDB.12.0;"
[/vba] на это [vba]Код
"Provider=Microsoft.Jet.OLEDB.4.0;"
[/vba] Цитата (_Boroda_ )
и подумал, что жизнь тебе не мила без ини-шника
мне главное, чтобы работало
Цитата (_Boroda_ )
У меня твой код вообще работать не хочет.
подозреваю, что надо заменить это [vba]Код
"Provider=Microsoft.ACE.OLEDB.12.0;"
[/vba] на это [vba]Код
"Provider=Microsoft.Jet.OLEDB.4.0;"
[/vba] Цитата (_Boroda_ )
и подумал, что жизнь тебе не мила без ини-шника
мне главное, чтобы работало nerv
Чебурашка стал символом олимпийских игр. А чего достиг ты? Тишина - самый громкий звук YM 41001156540584 / WM WMR R21924176233 https://github.com/nervgh/vba
Ответить
Сообщение Цитата (_Boroda_ )
У меня твой код вообще работать не хочет.
подозреваю, что надо заменить это [vba]Код
"Provider=Microsoft.ACE.OLEDB.12.0;"
[/vba] на это [vba]Код
"Provider=Microsoft.Jet.OLEDB.4.0;"
[/vba] Цитата (_Boroda_ )
и подумал, что жизнь тебе не мила без ини-шника
мне главное, чтобы работало Автор - nerv Дата добавления - 19.04.2013 в 13:50
nerv
Дата: Среда, 24.04.2013, 13:18 |
Сообщение № 6
Группа: Редакторы
Ранг: Обитатель
Сообщений: 431
Как оказалось, проблема была где-то в реестре. Причем она НЕ решалась файлом schema.ini. Выручил такой код: [vba]Код
Const HKEY_LOCAL_MACHINE = &H80000002 strComputer = "." Set objReg=GetObject("winmgmts:\\" & strComputer & _ "\root\default:StdRegProv") strKeyPath = "SOFTWARE\Microsoft\Jet\4.0\Engines\Text" strValueName = "Format" strValue = "TabDelimited" objReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
[/vba] источник http://msdn.microsoft.com/en-us/library/ms974559.aspx провайдер обязательно [vba]Код
"Provider=Microsoft.Jet.OLEDB.4.0;"
[/vba]
Как оказалось, проблема была где-то в реестре. Причем она НЕ решалась файлом schema.ini. Выручил такой код: [vba]Код
Const HKEY_LOCAL_MACHINE = &H80000002 strComputer = "." Set objReg=GetObject("winmgmts:\\" & strComputer & _ "\root\default:StdRegProv") strKeyPath = "SOFTWARE\Microsoft\Jet\4.0\Engines\Text" strValueName = "Format" strValue = "TabDelimited" objReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
[/vba] источник http://msdn.microsoft.com/en-us/library/ms974559.aspx провайдер обязательно [vba]Код
"Provider=Microsoft.Jet.OLEDB.4.0;"
[/vba] nerv
Чебурашка стал символом олимпийских игр. А чего достиг ты? Тишина - самый громкий звук YM 41001156540584 / WM WMR R21924176233 https://github.com/nervgh/vba
Сообщение отредактировал nerv - Среда, 24.04.2013, 13:21
Ответить
Сообщение Как оказалось, проблема была где-то в реестре. Причем она НЕ решалась файлом schema.ini. Выручил такой код: [vba]Код
Const HKEY_LOCAL_MACHINE = &H80000002 strComputer = "." Set objReg=GetObject("winmgmts:\\" & strComputer & _ "\root\default:StdRegProv") strKeyPath = "SOFTWARE\Microsoft\Jet\4.0\Engines\Text" strValueName = "Format" strValue = "TabDelimited" objReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
[/vba] источник http://msdn.microsoft.com/en-us/library/ms974559.aspx провайдер обязательно [vba]Код
"Provider=Microsoft.Jet.OLEDB.4.0;"
[/vba] Автор - nerv Дата добавления - 24.04.2013 в 13:18