Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
импорт из Excel в MS SQL
|
|||
|---|---|---|---|
|
#18+
Добрый день, пожалуйста помогите, проблема - есть .xls файл (таблица большая), как ее перенести в MS SQL? Если не трудно укажите ссылку на код. С Уважением, Alex ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2006, 08:59 |
|
||
|
импорт из Excel в MS SQL
|
|||
|---|---|---|---|
|
#18+
OdbcConnection olecon = new OdbcConnection(); olecon.ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};DBQ="+textBox1.Text+";"; //Extended Properties=Excel 8.0;HDR=Yes;IMEX=1 olecon.Open(); string str = "Select * from [Лист1$]"; OdbcCommand comm = new OdbcCommand(str, olecon); OdbcDataReader reader = comm.ExecuteReader(); try { while (reader.read()) { } } catch(Exception err) { } Finally { if(reader!=null){reader.close();} olecon.close(); } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2006, 09:58 |
|
||
|
импорт из Excel в MS SQL
|
|||
|---|---|---|---|
|
#18+
OdbcConnection olecon = new OdbcConnection(); olecon.ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};DBQ="+textBox1.Text+";"; //Extended Properties=Excel 8.0;HDR=Yes;IMEX=1 olecon.Open(); string str = "Select * from [Лист1$]"; OdbcCommand comm = new OdbcCommand(str, olecon); OdbcDataReader reader = comm.ExecuteReader(); try { while (reader.read()) { } } catch(Exception err) { } Finally { if(reader!=null){reader.close();} olecon.close(); } Спасибо за код, если можно - целиком рабочую версию кода. ( есть .xls файл (таблица) - как получить "анлогичную" таблицу в MS SQL?) С Уважением, Alex ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2006, 12:21 |
|
||
|
импорт из Excel в MS SQL
|
|||
|---|---|---|---|
|
#18+
а собссна ничего сложного дальше открываешь коннекшн к своей базе string connectionString="твой коннект"; SqlConnection sqlConn=new SqlConnection(connectionString); SqlCommand sqlComm=new SqlCommand("твой insert с параметрами",sqlConn); try { ....(что писал) sqlConn.Open(); ...... в блоке while (reader.read()) { параметрам присваеваешь reader.GetString(index столбца в Excel).ToString() (или GetValue(index столбца в Excel) в завис. от типа); sqlComm.ExecuteNonQuery(); } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2006, 13:00 |
|
||
|
импорт из Excel в MS SQL
|
|||
|---|---|---|---|
|
#18+
а собссна ничего сложного дальше открываешь коннекшн к своей базе string connectionString="твой коннект"; SqlConnection sqlConn=new SqlConnection(connectionString); SqlCommand sqlComm=new SqlCommand("твой insert с параметрами",sqlConn); try { ....(что писал) sqlConn.Open(); ...... в блоке while (reader.read()) { параметрам присваеваешь reader.GetString(index столбца в Excel).ToString() (или GetValue(index столбца в Excel) в завис. от типа); sqlComm.ExecuteNonQuery(); } Спасибо что ответили, если не возражаете несколько вопросов 1. можно все делать через WEB? 2.*.xls - имя файла? 3. textBox1 - TextBox для .xls файла? 4. что писать вместо [Лист$]? С Уважением, Alex ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2006, 14:06 |
|
||
|
импорт из Excel в MS SQL
|
|||
|---|---|---|---|
|
#18+
//соединение с базой string connectionString = "Net=dbmssocn;Data Source=TESTSERV;Integrated security=SSPI;Initial Catalog=BTP"; SqlConnection conn = new SqlConnection(connectionString); //ВСТАВКА ДАННЫХ ИЗ ЭКЗЕЛЯ В НОВУЮ ТАБЛИЦУ plan2 string selectString = "SELECT* INTO plan2 FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0','Data Source=D:\\Documents and Settings\\progr\\My Documents\\Книга1.xls;Extended Properties=Excel 8.0')...[Лист1$]"; //объект для SELECT запроса SqlCommand mySqlCommand = conn.CreateCommand(); //соединение с базой conn.Open(); //присвоение свойству commandText строку с SELECT-запросом mySqlCommand.CommandText = selectString; //создание SqlDataAdaptera SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter(); //долго объяснять mySqlDataAdapter.SelectCommand = mySqlCommand; //создание объекта DataSet для храниения результатов DataSet myDataSet = new DataSet(); //получение записей из таблицы string dataTableName = "plan2"; mySqlDataAdapter.Fill(myDataSet, dataTableName); Вот так у меня работает импорт на Web, где plan2 - имя таблицы которая сама создается при импорте в SQL, Лист1$ - так и пишется это имя листа. Успехов!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 11:57 |
|
||
|
импорт из Excel в MS SQL
|
|||
|---|---|---|---|
|
#18+
//соединение с базой string connectionString = "Net=dbmssocn;Data Source=TESTSERV;Integrated security=SSPI;Initial Catalog=BTP"; SqlConnection conn = new SqlConnection(connectionString); //ВСТАВКА ДАННЫХ ИЗ ЭКЗЕЛЯ В НОВУЮ ТАБЛИЦУ plan2 string selectString = "SELECT* INTO plan2 FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0','Data Source=D:\\Documents and Settings\\progr\\My Documents\\Книга1.xls;Extended Properties=Excel 8.0')...[Лист1$]"; //объект для SELECT запроса SqlCommand mySqlCommand = conn.CreateCommand(); //соединение с базой conn.Open(); //присвоение свойству commandText строку с SELECT-запросом mySqlCommand.CommandText = selectString; //создание SqlDataAdaptera SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter(); //долго объяснять mySqlDataAdapter.SelectCommand = mySqlCommand; //создание объекта DataSet для храниения результатов DataSet myDataSet = new DataSet(); //получение записей из таблицы string dataTableName = "plan2"; mySqlDataAdapter.Fill(myDataSet, dataTableName); Вот так у меня работает импорт на Web, где plan2 - имя таблицы которая сама создается при импорте в SQL, Лист1$ - так и пишется это имя листа. Успехов!!! Спасибо за помощь, по правде сказать многое не понял( извините за неграмотность) 1. строка - string selectString = "SELECT* INTO plan2 FROM OPENDATASOURCE.... что означает, (есть INSERT INTO...SELECT)? 2. Загрузить в dataset .xls файл можно так http://msdn.microsoft.com/library/rus/default.asp?url=/library/rus/dv_vbcode/html/vbtskcodeexamplereadingexceldataintodataset.asp код работает Вопрос - как таблицу из dataset "поместить" MS SQL( в таблице 3500 строк)? С Уважением, Alex ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 18:45 |
|
||
|
импорт из Excel в MS SQL
|
|||
|---|---|---|---|
|
#18+
строка - string selectString = "SELECT* INTO plan2 FROM OPENDATASOURCE.... эта строка создает новую таблицу в SQL такуюже как и у тебя в экзеле и заносит туда данные из экзеля. Если написать INSERT INTO...SELECT то она вставит данные в заранее созданную тадлицу в SQL. Вопрос - как таблицу из dataset "поместить" MS SQL( в таблице 3500 строк)? - В моем примере таблица из SQL заносится в датасет, нафига ее в начале занасить в датасет, когда твое таблица из екзеля напрямую попадает в SQL и там может быть не только 3500 строк, а больше(65536). А в датасете необходимо заносить таблицу чтобы потом ее можно было отабразить на Веб форме. С уважением, gev ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2006, 06:44 |
|
||
|
импорт из Excel в MS SQL
|
|||
|---|---|---|---|
|
#18+
строка - string selectString = "SELECT* INTO plan2 FROM OPENDATASOURCE.... эта строка создает новую таблицу в SQL такуюже как и у тебя в экзеле и заносит туда данные из экзеля. Если написать INSERT INTO...SELECT то она вставит данные в заранее созданную тадлицу в SQL. Вопрос - как таблицу из dataset "поместить" MS SQL( в таблице 3500 строк)? - В моем примере таблица из SQL заносится в датасет, нафига ее в начале занасить в датасет, когда твое таблица из екзеля напрямую попадает в SQL и там может быть не только 3500 строк, а больше(65536). А в датасете необходимо заносить таблицу чтобы потом ее можно было отабразить на Веб форме. С уважением, gev Огромное спасибо, я запустил в QA: SELECT * INTO plan_1 FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="d:\wwwroot\alex\second.xls";Extended properties=Excel 8.0')...Лист1$ в mssql создалась таблица plan_1 и в нее все из second.xls скопировались. Собственно этого я и добивался. Однако все пять столбцов во вновь созданной plan_1 имеют тип nvarchar а мне хотелось что бы один столбец был - datetime , второй - money, а остальные- nvarchar. Я создал такую таблицу plan_5 и попробовал: INSERT INTO plan_5 SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="d:\wwwroot\alex\third.xls";Extended properties=Excel 8.0')...Лист1$ появилась ошибка: Disallowed implicit conversion from data type nvarchar to data type money, table 'Ali.dbo.plan_5', column 'first_price'. Use the CONVERT function to run this query. Вопрос как добавить CONVERT(money,first_price)? C Уважением, Alex C Уважением, Alex ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2006, 12:09 |
|
||
|
импорт из Excel в MS SQL
|
|||
|---|---|---|---|
|
#18+
Поэтому я и предлагал вариант, когда каждому полю своей таблицы можешь присваивать сконверченные поля из excel типа Convert.ToDateTime(reader.getString(i)) в общем можно по разному, пробуй! )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2006, 12:30 |
|
||
|
импорт из Excel в MS SQL
|
|||
|---|---|---|---|
|
#18+
Дело в том что с екзеля он копирует столбцы не так как они у тебя расположены, а в алфавидном порядке вот и получается не стыковка форматов. Поэтому поставь в именах столбцов в екзеле буквы по алфавиту например a_imya b_telefon, c_adres и т.д Должго все получится пробуй. С уважением, gev ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2006, 13:10 |
|
||
|
импорт из Excel в MS SQL
|
|||
|---|---|---|---|
|
#18+
Дело в том что с екзеля он копирует столбцы не так как они у тебя расположены, а в алфавидном порядке вот и получается не стыковка форматов. Поэтому поставь в именах столбцов в екзеле буквы по алфавиту например a_imya b_telefon, c_adres и т.д Должго все получится пробуй. С уважением, gev Спасибо, за помощь я создал Excel таблицу из одного столбца с типом nvarchar запустил INSERT INTO plan_1 SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="d:\wwwroot\alex\third.xls";Extended properties="Excel 8.0;HDR=Yes;IMEX=1"')...Лист1$ Все сработало создал Excel таблицу из одного столбца с типом money Запустил INSERT... та же ошибка: Disallowed implicit conversion from data type nvarchar to data type money, table 'Ali.dbo.plan_1', column 'e_end_price'. Use the CONVERT function to run this query. С Уважением, Alex ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2006, 14:20 |
|
||
|
импорт из Excel в MS SQL
|
|||
|---|---|---|---|
|
#18+
Поэтому я и предлагал вариант, когда каждому полю своей таблицы можешь присваивать сконверченные поля из excel типа Convert.ToDateTime(reader.getString(i)) в общем можно по разному, пробуй! )) Спасибо, что вспомнили обо мне я сслылку нашел http://www.codeproject.com/useritems/Excel_Connectivity.asp как я понял используя только ms sql сконвертировать не получиться, попробую Ваш подход. Еще раз спасибо, и если не возражаете может еще раз к Вам обращусь за помощью. С Уважением, Alex ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2006, 16:27 |
|
||
|
импорт из Excel в MS SQL
|
|||
|---|---|---|---|
|
#18+
Тогда предлагаю сделать создаваемую таблицу временной. Описание: Создается новая таблица импортируемая из екзель, затем все данные из нее копируются в заранее созданую таблицу, и удаляем имортируемую таблицу. С Уважением, gev ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2006, 08:27 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=34022908&tid=1389005]: |
0ms |
get settings: |
11ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
91ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
2ms |
| others: | 254ms |
| total: | 466ms |

| 0 / 0 |
