【问题标题】:Facing problem in running command prompt commands from java从java运行命令提示符命令时面临问题
【发布时间】:2021-12-14 11:52:14
【问题描述】:

我正在尝试从 java 运行两个 cmd 命令,但似乎第二个命令没有运行。 实际上我已经将雪花与我的 java 程序集成,所以我正在尝试内部阶段加载。所以为此我必须运行 put 命令才能将我的文件从本地文件系统放到内部阶段。为此我需要通过 java 在我的 cmd 中运行 2 个命令。

1)snowsql // 用于登录 snowsql 2)put command //将文件从本地系统放到内部阶段。

我正在添加我的代码

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;

public class cmdconnect {





    public static void main(String[] args) throws IOException, NullPointerException { 
        ProcessBuilder pb =new ProcessBuilder();
        String filpath= "C:\\Users\\Ohr_id\\Desktop\\File_2.csv @int_stage1;";
        
        File path=new File("C:\\Users\\\\Desktop\\File_2.csv @int_stage1;"); 
      
String pt="put file:///";
    
        String res=pt+path;
        System.out.println(res);
                pb.command("cmd.exe", "/c"," snowsql && "+res+"");
      File dir = new File("C:\\Users\\OHR_ID\\Desktop");
       pb.directory(dir);
       Process q= pb.start();
        BufferedReader reader = new BufferedReader(new InputStreamReader(q.getInputStream()));
            String line = "";
            int i=0;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
                System.out.println(i++);
            }
    }
}
 

【问题讨论】:

  • 嘿,更好的对齐代码使用户更容易查看和回答您的问题。否则,大多数时候未对齐的代码都会被忽略。个人经验。
  • Snowflake JDBC 驱动支持 PUT 命令,那么你有理由想通过 Java 调用命令行 SnowSQL 吗?
  • @GregPavlik 我只需要一种方法来通过 java 将我的文件从本地机器加载到内部阶段,然后从那里加载到雪花表......所以你可以帮助使用 java 代码

标签: java snowflake-cloud-data-platform


【解决方案1】:

根据您的评论,您应该能够直接通过 JDBC 驱动程序使用 PUT 命令。这将比使用 Java 通过命令行调用 SnowSQL 更加稳定和高效。

这是一个可以用来测试它的最小代码块:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;

public class MainClass {

    public static void main(String[] args) {
        
        String accountURL = "my-account.my-region.snowflakecomputing.com";
        
        Properties props = new Properties();
        props.put("user", "my_user");
        props.put("password", "XXXXX");
        
        try {
            Connection con;
            con = DriverManager.getConnection("jdbc:snowflake://" + accountURL, props);
            PreparedStatement pstmt = con.prepareStatement("put file://c:\\temp\\data\\mydata.csv @TEST.PUBLIC.FOO");
            ResultSet rs = pstmt.executeQuery();
        } catch (SQLException e) {
            e.printStackTrace();
        }   
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-01
    相关资源
    最近更新 更多