0

我想将 CPLEX 与应该写入和读取我的数据的 CSV 格式文件连接起来。

我想我正确连接了文件夹“provacsv”中的 CSV 文件,如下所示:

DBConnection db("odbc","DRIVER={Microsoft Access Text Driver (*.txt, *.csv)}; DBQ=C:\\Users\\Giovanni\\opl\\provacsv");

但是我无法读取数据,即使像一列 2 个值一样简单。我正在使用以下语法:

c from DBRead(db,"SELECT c FROM cb.csv");
b from DBRead(db,"SELECT b FROM cb.csv");
A from DBRead(db,"SELECT * FROM A.csv");    // A is a matrix of values (like 2X2 matrix)

我还想用以下内容编写文件的输出:

x to DBWrite(db,"WRITE x TO x.csv");
4

2 回答 2

0

从 IBM Support查看这个示例,它基本上归结为使用 ODBC 驱动程序。与 Microsoft Access。将此代码放在一个*.dat文件中:

DBConnection db("odbc","DRIVER={Microsoft Access Text Driver (*.txt, *.csv)}; DBQ=.\\data");
Gasolines,Gas from DBRead(db,"SELECT name,name,demand,price,octane,lead FROM GasData.csv");
Oils,Oil from DBRead(db,"SELECT name,name,capacity,price,octane,lead FROM OilData.csv");
MaxProduction = 14000;
ProdCost = 4;

然后在一个子文件夹中.\data,你必须把你的*.csv文件。我用兼容的 Access 驱动程序尝试了它,它抛出了元素未定义的错误。但至少这是官方 IBM 示例中的官方方式。

于 2018-01-26T12:53:02.767 回答
-2

用于读取 csv

您应该使用 IloOplInputFile:

假设你有这个 export.cvs 文件

Nicolas;2;
Alexander;3;

然后你可以写

tuple t
{
string firstname;
int number;
}

{t} s={};

execute
{
var f=new IloOplInputFile("export.csv");
while (!f.eof)
{
var str=f.readline();
//writeln(str);
var ar=str.split(";");
if (ar.length==3) s.add(ar[0],Opl.intValue(ar[1]));
}
f.close();
}

execute
{
writeln(s);
}

它将读取 csv 文件并计算元组集 s:

{<"Nicolas" 2> <"Alexander" 3>}

和写

tuple t
{
string firstname;
int number;
}

{t} s={<"Nicolas",2>,<"Alexander",3>};

execute
{
var f=new IloOplOutputFile("export.csv");
for(var i in s)
{
f.writeln(i.firstname,";",i.number,";");
}
f.close();
}

写入文件 export.csv

Nicolas;2;
Alexander;3;

这也可以在

https://www.ibm.com/developerworks/community/forums/html/topic?id=538340b3-3e1a-4951-bed3-48cac63e7c29&ps=25

https://www.ibm.com/developerworks/community/forums/html/threadTopic?id=3fd44d41-210b-4b81-a005-819530d6377b&ps=25

于 2017-11-13T16:45:29.087 回答