2

コード:

set heading off
  set arraysize 1
  set newpage 0
  set pages 0
  set feedback off
  set echo off
  set verify off

spool 'c:\farmerList.csv'
/

select FIRSTNAME','LASTNAME','TRN','CELL','PARISH

spool off

ファイルはディレクトリに保存されていますが、「select FIRSTNAME」、「LASTNAME」、「TRN」、「CELL」、「PARISH」が保存されており、クエリの結果は csv 形式で保存されていません。私は何を間違っていますか?

4

2 に答える 2

3

句がないため、選択は不完全ですがfrom、コピーアンドペーストでそれを失ったかどうかはわかりません。部分的なステートメントは実行されないため (終了;または/次の行では実行されない)、実行するものは何もありません。句がある場合はfrom farmers;、コマンドと ORA-00923 エラーが表示される可能性があります。

||フィールド間に引用符で囲まれたコンマを置くだけではなく、連結記号を使用してその文字でフィールドを連結する必要があります。

spool 'c:\farmerList.csv'

select FIRSTNAME
    ||','|| LASTNAME
    ||','|| TRN
    ||','|| CELL
    ||','|| PARISH
from farmers;

を含むファイルを与える

Joe,Grundy,X,Y,Ambridge

フィールドは別々の行にある必要はありません。読みやすく、コンマを追跡しやすいと思います。

/スプール コマンドの後spoolの傷つく。

列の区切り記号をコンマにするコマンドもset colsepありますが、パディングについて心配する必要があるため、(ほぼ) 行っているように列を連結する方が簡単です。


ただし、タイトルに SQL Developer の参照が含まれていることに気付かなかったので、SQL*Plus の場合を除きます。おそらく不要なものをトラップしてエコーするように見え、すべてのコマンドが機能するわけではないため、Developer ではスプールは少し奇妙ですset(バージョンによって異なります)。

より安全で好ましい方法は、コンマを連結せずに通常のクエリを実行することだと思います。

select FIRSTNAME, LASTNAME, TRN, CELL, PARISH
from farmers;

また、「run script」ではなく「run」を使用して、クエリ結果ウィンドウのグリッド ビューに結果が表示されるようにします。グリッドを右クリックし、[エクスポート] を選択します。その後、CSV または XLS として保存することができ、必要に応じてヘッダー行を持たないことを選択できます。

于 2013-04-09T16:27:52.490 に答える
-1

これが正しい解決策です。これを実行してください

import java.sql.*;
import java.io.*;
import au.com.bytecode.opencsv.CSVWriter;

public class TableExport {
public static void main(String[] args) {

try{
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE","name","password");
conn.setAutoCommit(false);
Statement statement = conn.createStatement();
ResultSet resultData = statement.executeQuery("select * from your_table");

            CSVWriter writer = new CSVWriter(new FileWriter(new File("D:/Uploads/Output5.csv")), '|');
            writer.writeAll(resultData, true);
            writer.close();

}catch (Exception e){
    System.out.println("Error" +e);
    }
  }
}

このコードを適切に実行するには、ライブラリ フォルダに oracle-jdbc.jar と opencsv1.7.jar が必要であることに注意してください。

于 2015-04-14T18:02:54.507 に答える