SQL分佈式查詢

/*
測試文件內容:
e:/Module/test.xls
job_desc  job_id  max_lvl  min_lvl
記錄一  1.0  11.0  11.0
記錄二  2.0  22.0  22.0
記錄三  3.0  33.0  33.0
記錄四  4.0  44.0  44.0
e:/Module/temp.mdb文件jobs 表
job_desc job_id  max_lvl  min_lvl
記錄一  1  11  11
記錄二  2  22  22
記錄三  3  33  33
記錄四  4  44  44
e:/Module/test.csv
Fname Lname Salary Tax
smith william 1000 275
scott tiger 2000 275
John Jumangi 2500 345
sam Rooban 3524 600
peter norton 1234 320
kathy Lee 8300 1200
e:/Module/test.txt
Fname Lname Salary Tax
smith william 1000 275
scott tiger 2000 275
John Jumangi 2500 345
sam Rooban 3524 600
peter norton 1234 320
e:/Module/union1.txt
Fname Lname Salary Tax
smith william 1000 275
scott tiger 2000 275
John Jumangi 2500 345
sam Rooban 3524 600
peter norton 1234 320
e:/Module/union1.csv
Fname Lname Salary Tax
smith nana 1000 275
scott jany 2000 275
John leilei 2500 345
sam Rooban 3524 600
peter norton 1234 320

*/
--Read Excel Sheet using OpenDataSource
--使用OpenDataSource讀取Excel表格
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="e:/Module/test.xls";
    User ID=Admin;Password=;Extended properties=Excel 5.0')...Sheet1$
--Read Excel Sheet using OpenRowSet
--使用OpenRowSet讀取Excel表格
select * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 5.0;DATABASE=e:/Module/test.xls', 'Select * from [Sheet1$]')
--Read SQL Server table using OpenDataSource
--使用OpenDataSource 跨服務器查詢
--經測試,Data Source 只接受機器名。而不接受IP地址
SELECT * FROM  OPENDATASOURCE('SQLOLEDB','Data Source=accp;User ID=sa;Password=').pubs.dbo.jobs
--Read SQL Server table using OPENROWSET
--使用OPENROWSET 跨服務器查詢
SELECT * FROM OPENROWSET('MSDASQL','DRIVER={SQL Server};SERVER=accp;UID=sa;PWD=',pubs.dbo.jobs)
--Read MS-Access table using OpenDataSource
SELECT * FROM  OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0','Data Source="e:/Module/temp.mdb";User ID=Admin;Password=')...jobs
--Read MS-Access table using OpenRowSet
SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','e:/Module/temp.mdb';'admin';'', jobs)
--查詢csv文件
--Read CSV using OpenRowSet
select * from OpenRowset('MSDASQL', 'Driver={Microsoft Text Driver (*.txt; *.csv)};
  DefaultDir=e:/Module','select top 6 * from test.csv')
--Read Text using OpenRowSet
--將上面用到的csv文件拷一份重命名爲test.txt即可
select * from OpenRowset('MSDASQL', 'Driver={Microsoft Text Driver (*.txt; *.csv)};
  DefaultDir=e:/Module','select top 5 * from
test.txt')
--聯合csv和txt 文件的查詢
select * from OpenRowset('MSDASQL','Driver={Microsoft Text Driver (*.txt; *.csv)};DefaultDir=e:/Module;',
'select top 5 * from union1.txt')
 union
select * from OpenRowset('MSDASQL','Driver={Microsoft Text Driver (*.txt; *.csv)};DefaultDir=e:/Module;',
'select top 5 * from union1.csv')
--Not found List
--過濾查詢
select * from OpenRowset('MSDASQL', 'Driver={Microsoft Text Driver (*.txt; *.csv)};
  DefaultDir=e:/Module;','select top 5 * from union1.txt')
where Lname not in
(select Lname from OpenRowset('MSDASQL', 'Driver={Microsoft Text Driver (*.txt; *.csv)};
  DefaultDir=e:/Module;','select top 5 * from
union1.csv') )
--建立視圖查詢.txt文本文件內容
create view [MyText] as
select * from OpenRowset('MSDASQL', 'Driver={Microsoft Text Driver (*.txt; *.csv)};
  DefaultDir=e:Module;','select top 5 * from
test.txt')
Go
select * from [MyText]
go
select * from [MyText] where Fname like 'S%'
go
--建立視圖查詢.xls文件內容
Create view [MyExcel] as
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
  'Data Source="e:Module/test.xls";
    User ID=Admin;Password=;Extended properties=Excel 8.0')...Sheet1$
go
select * from [MyExcel] where job_desc like '%三%'
 
//HDR有2個值
//HDR=NO無字段列
//HDR=Yes第一行作爲字段列
 
//IMEX有3個值:
//0:此Excel只可讀取
//1:此Excel只可寫入
//2:此Excel同時支持讀取及寫入。

string connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};User ID=Admin;Password=;Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\"", "C:\\test.xls");
            int num = 0;
           
            using (OleDbConnection connection = new OleDbConnection(connectionString))
            {
                string sql = "insert into [" + sheetName + "$A:H](說話人,英文,中文,起始時間,播放長度,本地路徑,原路徑) values("
                       + "'"+row["lesson_title"].ToString().Replace ("'","''") + "',"
                       + "'"+ row["lesson_eng"].ToString().Replace ("'","''") + "',"
                       + "'"+ row["lesson_chn"].ToString().Replace ("'","''") + "',"
                       + "'',"
                       + "'"+ row["lesson_voice_len"].ToString().Replace ("'","''") + "',"
                       + "'"+ row["lesson_short"].ToString().Replace ("'","''") + "',"
                       + "'"+ row["lesson_voice"].ToString().Replace ("'","''") + "');";
                //在Excel的Sheet1的A3到H3處插入數據
                //cmd.CommandText = "insert into [Sheet1$A3:H3] (F1,F2,F3,F4,F5,F6,F7,F8) values('" + a200.Date + "','"
                //    + a200.PreviousClosePrice + "','" + a200.OpenPrice + "','" + a200.High + "','" + a200.Low + "','" + a200.Close + "','" +
                //    a200.Change + "','" + a200.ChangeRate + "')";

                System.Data.OleDb.OleDbCommand command  = new OleDbCommand();
                command.Connection = connection;
                command.Connection.Open();
                command.CommandText = sql;
                Console.WriteLine (sql);
                try
                {
                    num  = command.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
              
            }

 
 
 
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章