文本内容如下:Page 1/6
        -------------------------------------------------------------------------------------------------------------------------------            程序名       = 4RL026B2.E51
            最后更新日期 = 2006/08/28 12:10
            基板ID       =            < 生产管理信息 >                            生产基板数量 =          517
                          生产数量(电路) =          517                            开始生产时刻 = 2006/08/28 08:07:55
                            结束生产时刻 = 2006/08/28 19:57:46
。//以下为需导入的文本:                                   总吸               元件  吸取 元件      激光 异类  芯片  吸取     
        供应 通道 元件名           取数 吸取数 贴片数 丢失  错误  无  重试 识别 元件  站立  偏差 其它
        LF- 1 *  1005/1/16W-330R   1034   1034   1034    0     0    0    0    0    0     0   *** 0   
        LF- 3 *  1005/1/16W-470R   1035   1034   1034    1     1    0    0    0    0     0   *** 0   
        LF- 5 *  CC1005/50V-3PF-   1034   1034   1034    0     0    0    0    0    0     0   *** 0   
     0   *** 0  在SQL查询分析器中用以下语句可执行,在VC中不知如何写?
在查询分析器中可用的二种方法,语句分别如下:
(1):方法一:
select * from OpenRowset('MSDASQL', 'Driver={Microsoft Text Driver (*.txt; *.csv)};
DefaultDir=f:\;','select * from 4321.txt') 
(2):方法二:EXEC master..xp_cmdshell 'bcp "test..make" in  f:\db\1234.txt -c -S"SHAREPOINT" -U"sa" -P"123456"'问题一:这二种方法如何在查询分析器中利用INSERT INTO 语句去插入到数据库(第一种方法我原来曾经用INSERT INTO 语句可插入数据库,后来没保存,忘了)?问题二:如何在VC6.0+ADO编程中正确插入这些语句(上面提到的那二种方法)?我已经写了个ADOConn类:在下面的代码中插入SQL语句,提示出错(别的简单的SQL语句在以下代码中可以执行的):ADOConn m_AdoConn;
m_AdoConn.OnInitADOConn();
//
CString id;
id.Format("%d", id);
CString OrganName;
OrganName.Format("%f",OrganName);   int i;
   i=100; _bstr_t vSQL;
vSQL="select OrganName from OpenRowset('MSDASQL', 'Driver={Microsoft Text Driver (*.txt; *.csv)};
DefaultDir=f:\;','select OrganName from 4321.txt') "
m_AdoConn.ExecuteSQL(vSQL);
//
m_AdoConn.ExitConnect();
希望给出详细代码,谢谢!

解决方案 »

  1.   

    出错代码如下:ompiling...
    impDlg.cpp
    F:\develope\code\imp\impDlg.cpp(265) : error C2001: newline in constant
    F:\develope\code\imp\impDlg.cpp(266) : error C2146: syntax error : missing ';' before identifier 'DefaultDir'
    F:\develope\code\imp\impDlg.cpp(266) : error C2065: 'DefaultDir' : undeclared identifier
    F:\develope\code\imp\impDlg.cpp(266) : error C2065: 'f' : undeclared identifier
    F:\develope\code\imp\impDlg.cpp(266) : error C2143: syntax error : missing ';' before ':'
    F:\develope\code\imp\impDlg.cpp(266) : error C2017: illegal escape sequence
    F:\develope\code\imp\impDlg.cpp(266) : error C2146: syntax error : missing ';' before identifier 'select'
    F:\develope\code\imp\impDlg.cpp(266) : error C2065: 'select' : undeclared identifier
    F:\develope\code\imp\impDlg.cpp(266) : error C2146: syntax error : missing ';' before identifier 'OrganName'
    F:\develope\code\imp\impDlg.cpp(266) : error C2059: syntax error : 'bad suffix on number'
    F:\develope\code\imp\impDlg.cpp(266) : error C2065: 'OrganName' : undeclared identifier
    F:\develope\code\imp\impDlg.cpp(266) : error C2146: syntax error : missing ';' before identifier 'from'
    F:\develope\code\imp\impDlg.cpp(266) : error C2065: 'from' : undeclared identifier
    F:\develope\code\imp\impDlg.cpp(266) : error C2143: syntax error : missing ';' before 'constant'
    F:\develope\code\imp\impDlg.cpp(266) : error C2001: newline in constant
    F:\develope\code\imp\impDlg.cpp(266) : error C2146: syntax error : missing ';' before identifier 'txt'
    F:\develope\code\imp\impDlg.cpp(266) : error C2065: 'txt' : undeclared identifier
    F:\develope\code\imp\impDlg.cpp(266) : error C2143: syntax error : missing ';' before 'constant'
    F:\develope\code\imp\impDlg.cpp(273) : error C2146: syntax error : missing ';' before identifier 'm_AdoConn'
    Error executing cl.exe.另上贴中以下代码是不小心贴上去的,已删除了:CString id;
    id.Format("%d", id);
    CString OrganName;
    OrganName.Format("%f",OrganName);   int i;
       i=100;
      

  2.   

    我的这个贴子问过BCP的方法:
    http://community.csdn.net/Expert/topic/4978/4978569.xml?temp=.6574671
    可以在SQL查询分析中可执行,却不知道在VC ADO中插入这些语句。或,有别的那以上文本插入到数据库的方法:最好是智能化一点,比如读取指定行,或指定字节后决定是否开始导入?
      

  3.   

    ADOConn类CPP文件如下:
    ADOConn::ADOConn()
    {}ADOConn::~ADOConn()
    {}// void  ADOConn::OnInitADOConn()
    {
    // 
    ::CoInitialize(NULL);
      
    try
    {
    //
    m_pConnection.CreateInstance("ADODB.Connection");
    //
    _bstr_t strConnect = "Provider=SQLOLEDB; Server=SHAREPOINT;Database=test; uid=sa; pwd=hibit1234;";
    m_pConnection->Open(strConnect,"","",adModeUnknown);
    }
    // 
    catch(_com_error e)
    {
    //
    AfxMessageBox(e.Description());
    }
    }//
    _RecordsetPtr&  ADOConn::GetRecordSet(_bstr_t bstrSQL)
    {
    try
    {
    // 
    if(m_pConnection==NULL)
    OnInitADOConn();
    //
    m_pRecordset.CreateInstance(__uuidof(Recordset));
    //
    m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
    }
    //
    catch(_com_error e)
    {
    //
    AfxMessageBox(e.Description());
    }
    //
    return m_pRecordset;
    } // 
    BOOL ADOConn::ExecuteSQL(_bstr_t bstrSQL)
    {
    //_variant_t RecordsAffected;
    try
    {
    // 
    if(m_pConnection == NULL)
    OnInitADOConn();
    //  

    //
    m_pConnection->Execute(bstrSQL,NULL,adCmdText);
    return true;
    }
    catch(_com_error e)
    {
    AfxMessageBox(e.Description());
    return false;
    }
    }void ADOConn::ExitConnect()
    {
    // 
    if (m_pRecordset != NULL)
    m_pRecordset->Close();
    m_pConnection->Close();
    //
    ::CoUninitialize();
    }
      

  4.   

    ="select OrganName from OpenRowset('MSDASQL', 'Driver={Microsoft Text Driver (*.txt; *.csv)};
    DefaultDir=f:\;','select OrganName from 4321.txt') "
    里面的单引号要用转义字符吧,用两个表示一个
      

  5.   

    是不是写成这样:="select OrganName from OpenRowset(''MSDASQL'', ''Driver={Microsoft Text Driver (*.txt; *.csv)};
    DefaultDir=f:\;'',''select OrganName from 4321.txt'') "
    不知道VC++是否技术OpenRowset ,流汗ING
    急呀!!1
    郁闷!!!
      

  6.   

    修改之后运行通过的SQL语句: vSQL="select OrganName from  OpenRowset(''MSDASQL'', ''Driver={Microsoft Text Driver (*.txt; *.csv)};DefaultDir=f:\;'',''select OrganName from 4321.txt'')";
        
      但是我是需要insert into 语句:
     vSQL="insert into  makechar OpenRowset(''MSDASQL'', ''Driver={Microsoft Text Driver (*.txt; *.csv)};DefaultDir=f:\;'',''select  from 4321.txt'')";
    TXT档的列设置如下:
    "id","ProvideChannel","OrganName","AllImbibeNum","ImbibeNum","AdhibitNum","OrganLoss","ImbibeError", "OragnON", "ReTry", "LaserRecognise","DifferentOrgan", "ChipsetStand", "ImbibeWarp"," Other"
      

  7.   

    数据库里有一个 makechar的表,字段同文本的相同,唯一不同的是ID是INT的,TXT的ID当然是
    CHAR的。
       我正在试具体的写法.
      

  8.   

    先在查询分析器里试试.OK了再写代码应该不会有什么问题''select  from 4321.txt'')"这里...
      

  9.   

    偶喜欢用带有prepare功能的insert into SQL执行~....-_-!!insert into ...(?, ?, ?)
      

  10.   

    这样可以支持除了×LOB之外几乎任何字段类型……比如日期类型……至于性能……不清楚,呵呵~
      

  11.   

    这样在查询分析器中验证通过:
    select OrganName from  OpenRowset('MSDASQL', 'Driver={Microsoft Text Driver (*.txt; *.csv)};DefaultDir=f:\;','select OrganName from 4321.txt')
      

  12.   

    你在查询分析器中这样也不行:
    declare @sql varchar(8000)
    set @sql='select OrganName from  OpenRowset('MSDASQL', 'Driver={Microsoft Text Driver (*.txt; *.csv)};DefaultDir=f:\;','select OrganName from 4321.txt')'
    exec(@sql)不过楼主现在的问题到底是什么呢?
      

  13.   

    只差一个Other列了,加上这列命令时分析查询通过,执行查询时出错:
    服务器: 消息 7320,级别 16,状态 2,行 1
    未能对 OLE DB 提供程序 'MSDASQL' 执行查询。
    [OLE/DB provider returned message: [Microsoft][ODBC Text Driver] 参数不足,期待是 1。]
    OLE DB 错误跟踪[OLE/DB Provider 'MSDASQL' ICommandText::Execute returned 0x80040e10]以下是未加Other列可完全执行的语句: select ProvideChannel, OrganName ,AllImbibeNum ,ImbibeNum,AdhibitNum,OrganLoss,ImbibeError, OragnON, ReTry, LaserRecognise,DifferentOrgan, ChipsetStand, ImbibeWarp  from  OpenRowset('MSDASQL', 'Driver={Microsoft Text Driver (*.txt; *.csv)};DefaultDir=f:\;','select ProvideChannel,OrganName ,AllImbibeNum ,ImbibeNum,AdhibitNum,OrganLoss,ImbibeError, OragnON, ReTry, LaserRecognise,DifferentOrgan, ChipsetStand, ImbibeWarp  from 4321.txt')
      

  14.   

    加上Other 就不行,不加上就可以。ImbibeWarp 列是***都可以,Other却不行,晕了喔
    高手呢?
      

  15.   

    Other--->[Other]试试? 不过没道理, 你加上OTHER再去掉一个其他字段呢?
    或者你贴点数据上来看看
      

  16.   


    楼主,去www.mylinux.com.cn看看,那里专业资料多,应该能得到解答
      

  17.   

    www.mylinux.com.cn里这方面没有好的资料。全看了,网上的资料全是到处抄的,那些关于导入导出的文章全是一样的,连例子格式什么的都一样,唉!!!  只不过还是要谢谢joy2th() ( ) 信誉:100    Blog 的关注
      

  18.   

    万一不行,考虑用CFile类算了。
      

  19.   


    就是在VC++6.0 的ADO编程里插入一条可以导入TXT档的SQL语句:语句就是这句,
    不知道具体写法,求具体写法。insert into   select * from OpenRowset('MSDASQL', 'Driver={Microsoft Text Driver (*.txt; *.csv)};
    DefaultDir=f:\;','select * from 4321.txt') 
      

  20.   

    问题不是变成了:
    只差一个Other列了,加上这列命令时分析查询通过,执行查询时出错:
    服务器: 消息 7320,级别 16,状态 2,行 1
    未能对 OLE DB 提供程序 'MSDASQL' 执行查询。
    [OLE/DB provider returned message: [Microsoft][ODBC Text Driver] 参数不足,期待是 1。]
    OLE DB 错误跟踪[OLE/DB Provider 'MSDASQL' ICommandText::Execute returned 0x80040e10]以下是未加Other列可完全执行的语句: select ProvideChannel, OrganName ,AllImbibeNum ,ImbibeNum,AdhibitNum,OrganLoss,ImbibeError, OragnON, ReTry, LaserRecognise,DifferentOrgan, ChipsetStand, ImbibeWarp  from  OpenRowset('MSDASQL', 'Driver={Microsoft Text Driver (*.txt; *.csv)};DefaultDir=f:\;','select ProvideChannel,OrganName ,AllImbibeNum ,ImbibeNum,AdhibitNum,OrganLoss,ImbibeError, OragnON, ReTry, LaserRecognise,DifferentOrgan, ChipsetStand, ImbibeWarp  from 4321.txt')你加了other在查询分析器中也不行??
      

  21.   

    第一步:如何在查询分析器中执行语句:(以下非十分正确写法)
    insert into   select * from OpenRowset('MSDASQL', 'Driver={Microsoft Text Driver (*.txt; *.csv)};
    DefaultDir=f:\;','select * from 4321.txt') 第二步:
    把查询分析器中可以执行的语句添加到C++中。明白I不?现在最关键的是如何在查询分析器中通过
      

  22.   

    exec master..xp_cmdshell 'bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout c:\Authors.txt -c -t , -S Flysky -U sa -P 密码'
    go
    create table test(name varchar(200),b varchar(200))
    insert test(name,b) select Abraham,Bennet from OpenRowset('MSDASQL', 'Driver={Microsoft Text Driver (*.txt; *.csv)}; 
    DefaultDir=c:\;','select Abraham,Bennet from Authors.txt')
    select name,b from test
    drop table test
    ―――――――――――――――――――――――――――――――――――――――
      

  23.   

    create table test(name varchar(200),b varchar(200))
    insert test(name,b) select Abraham,Bennet from OpenRowset('MSDASQL', 'Driver={Microsoft Text Driver (*.txt; *.csv)}; 
    DefaultDir=c:\;','select Abraham,Bennet from Authors.txt')
    select name,b from test
    drop table test
    ??
    这是BCP吗?
    上面一部分代码是为了得到Authors.txt,以逗号分割
      

  24.   

    用得着用BCP 得到TXT吗???我单用一个OPENROWSET 语句就可以做到了,何必如此麻烦。
    我现在要的是如何把这些得到的数据插入数据库。我上面有那么多的信息,你写个完全插入的给我看下。你以为我这几条命令都看不懂??exec master..xp_cmdshell 'bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout c:\Authors.txt -c -t , -S Flysky -U sa -P 密码'
    go
    多此一举!!!
      

  25.   

    id","ProvideChannel","OrganName","AllImbibeNum","ImbibeNum","AdhibitNum","OrganLoss","ImbibeError", "OragnON", "ReTry", "LaserRecognise","DifferentOrgan", "ChipsetStand", "ImbibeWarp"," Other"不知道有没数错,楼主牛人这里好象是15列,小菜刚写了个16列的OK 
      

  26.   

    SQL语句写法:use test
    go
     
    select * into txt  from OpenRowset('MSDASQL', 'Driver={Microsoft Text Driver (*.txt; *.csv)};
    DefaultDir=f:\;','select * from 4321.txt') 
    文本设置成如下格式:
    "id","ProvideChannel", "OrganName" ,"AllImbibeNum" ,"ImbibeNum","AdhibitNum","OrganLoss","ImbibeError", "OragnON", "ReTry", "LaserRecognise","DifferentOrgan","ChipsetStand","ImbibeWarp","Other"
    1,      LF- 1,   1005/1/16W-330R,   1034,  1034,   1034,    0,     0 ,   0,    0,    0,    0,     0,   ***, 0   
    2,      LF- 3,   1005/1/16W-470R,   1035,   1034,   1034,    1,     1,    0,    0,    0,    0,     0,   ***, 0   
    3,      LF- 5,   CC1005/50V-3PF-,   1034,   1034,   1034,    0,     0,    0,    0,    0,    0,     0,   ***, 0   
    4,      LF- 7,   1005/1/16W-330R,   1034,   1034,   1034,    0,     0,    0,    0,    0,    0,     0,   ***, 0   
    5,      LF- 9,   1005/1/16W-10R ,   5695,   5689,   5687,    6,     6,    1,    1,    2,    0,     0,   ***, 0   
    6,      LF-11,   CC1005/25V-1000,   4663,   4654,   4653,    8,     9,    1,    1,    0,    0,     0,   ***, 1   
    7,      LF-13,   1005/1/16W-2.7K,   1553,   1551,   1551,    0,     2,    1,    1,    0,    0,     0,   ***, 0   
    8,      LF-15,   CC1005-6.3V-1uF,   1557,   1552,   1551,    6,     5,    0,    0,    1,    0,     0,   ***, 0   
    这样就可以搞定了!!!!