Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
How to use BULK INSERT ?
Message
 
 
To
18/11/2004 10:23:16
Cetin Basoz
Engineerica Inc.
Izmir, Turkey
General information
Forum:
Visual FoxPro
Category:
Client/server
Environment versions
Visual FoxPro:
VFP 8 SP1
OS:
Windows XP
Database:
MS SQL Server
Miscellaneous
Thread ID:
00956757
Message ID:
00962682
Views:
17
Hi Cetin,
Thank you for you help.
I spent a lot of time yesterday reading other forums , such as
www.dbforums.com, p2p.wrox.com, www.winnetmag.com ... and I found not less then 10 exactly the same questions, but no one exact answer.
Of couse I checked the existents of vfpoledb.dll, and downloaded new version of it,
downloaded MDAC 2.8, VFPODBC.msi - no help.
but i will keep trying,
thanks again .
Mariam

>Mariam,
>Be sure VFPOLEDB is installed and registered there. You might quickly check it in many ways. ie: with a simple HTM
>
><html>
><title>Check VFP Table</title>
><body>
><script language="JScript">
>function CheckTable(dbcPath,dbfName)
>{
>  var strCn = "Provider=VFPOLEDB;Data Source=" + dbcPath;
>  var strSQL = "select * from " + dbfName;
>
>  var oConn = new ActiveXObject("Adodb.Connection");
>  oConn.ConnectionString = strCn;
>  oConn.Open;
>  var oRS = oConn.Execute(strSQL);
>
>  var lst="<TABLE border='1'><TR>";
>  var Maxfields=5;
>  var MaxRows=20;
>
>  for (i=0;i<Math.min(oRS.Fields.Count,Maxfields);i++)
>  {
>    lst += "<TH>";
>    lst += oRS.Fields(i).Name;
>    lst += "</TH>";
>  }
>  lst += "</TR>";
>
>  var counter=0;
>  while (!oRS.eof && counter < MaxRows)
>  {
>    lst += "<TR>";
>    for (i=0;i<Math.min(oRS.Fields.Count,Maxfields);i++)
>    {
>      lst += "<TD>";
>      lst += oRS.Fields(i).Value;
>      lst += "</TD>";
>    }
>    lst += "</TR>";
>    oRS.MoveNext();
>    counter++;
>  }
>  lst += "</TABLE>";
>  oConn.Close();
>  tablelist.innerHTML = lst;
>  return true;
>}
></script>
><table>
><TR><TD>Locate DBC</TD><TD><input type='file' size='80' name='DBCLOCATION'></TD></TR>
><TR><TD>TableName</TD><TD><input type='text' size='80' name='TABLENAME'></TD></TR>
></TABLE><HR>
><input type='button' value='List' onClick="CheckTable(DBCLOCATION.value,TABLENAME.value);return;">
><div id='tablelist'></div>
></body>
></html>
>
>With a udl.
>-Create an empty file with extension .udl
>-Dblclick the udl file
>-Try to select VFPOLEDB from providers and creating a connection
>Cetin
>
>
>
>
>>Hello Cetin !
>>I am sorry that I have to return to this question again, but I still have an unsolved issue.
>>
>>When I first used OPENROWSET method like this
>>SELECT * FROM OPENROWSET('VFPOLEDB', 'C:\TEMP ';'';'','select * from test1.dbf')
>>I got the error:
>>“Ad hoc access to OLE DB provider ‘CustomOLEDBProvider ‘ has been denied. You must access this provider through a linked server”.
>>In MS KB I found the article # 328569 which gave the solution for this problem - to install the service pack for MS SQL Server. After the installation SP3 (check that DissallowAdHocAccess key exists) I got another message for the same action:
>>“Could not create an instance of OLE DB provider 'VFPOLEDB'.
>>OLE DB error trace [Non-interface error: CoCreate of DSO for VFPOLEDB returned 0x80040154]. “
>>
>>I tried the same action on my local computer, where I have another copy of MS SQL Server- it works fine.
>>(I have Windows XP on my computer, and Windows NT on our main server. )
>>
>>I am wondering may be you know what the a problem here, what else I have to check or install ?
>>
>>Thank you very much,
>>Mariam
>>
>>
>>>Mariam,
>>>Why are you using MSDASQL. It's a wrapper driver for ODBC. Directly use VFPOLEDB driver (BTW MSDASQL works too). ie:
>>>
*Assuming SQL server has a table named myTable with same structure as ordItems
>>>* lnHandle is ready
>>>text to m.lcSQL textmerge noshow
>>>insert into myTable ;
>>>  SELECT * FROM
>>>  OPENROWSET('VFPOLEDB',
>>>  '<<_samples+"data\testdata.dbc">>';'';'',
>>>  'select * from orditems')
>>>endtext
>>>SQLExec(m.lnHandle,m.lcSQL)
>>>
Cetin
>>>
>>>>Thank you for help.
>>>>i try to use OpenRowSet() but have a error message
>>>>
>>>>1)
>>>>exec sp_addlinkedserver @server=N'CSTSERVER',
>>>>@srvproduct ='',
>>>>@provider = N'MSDASQL',
>>>>@datasrc=N'DBF'
>>>>2)
>>>>exec sp_addlinkedsrvlogin @rmtsrvname=N'CSTSERVER',
>>>>@useself = N'FALSE',
>>>>@locallogin = NULL,
>>>>@rmtuser = N'',
>>>>@rmtpassword =N''
>>>>
>>>>first two work fine
>>>>
>>>>3)
>>>>select * from [CSTSERVER].[Q:\FPDEV\COMMON\sqlappinspect]..[helpdb]
>>>>
>>>>here i have an error
>>>>OLE DB provider 'MSDASQL' reported an error.
>>>>[OLE/DB provider returned message: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified]
>>>>OLE DB error trace [OLE/DB Provider 'MSDASQL' IDBInitialize::Initialize returned 0x80004005: ].
>>>>
>>>>
>>>>
>>>>>>Hello All !
>>>>>>I have VFP 8.0/SQL Server SPT application.
>>>>>>I'm wondering is there any way to use BULK INSERT command for loading DBF file into a SQL Server table ? All examples I've seen were about loading text files and not the DBF.
>>>>>>TIA
>>>>>>Mariam
>>>>>
>>>>>Mariam,
>>>>>It's because dbf files do not need BULK INSERT command. See OpenRowSet() - or search here for samples.
>>>>>Cetin
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform