使用mysql匯入檔案
一,文字文件格式的匯入(mysql)
1. 表tt的格式:
CREATE TABLE `tt` (
`ind` int NOT NULL auto_increment,
`name` char(100) default NULL,
PRIMARY KEY (`ind`)
)
2. 檔案d.txt的內容示例:
1,a
2,b
3,c
3 .匯入命令:
mysql> load data infile 'd.txt' into table tt
-> fields terminated by','
-> lines terminated by'\r\n'
注意的地方:
1)、檔案可以使用絕對路徑如'c:/d.txt',否則請將檔案放在資料庫根目錄中
2)、因為欄位之間用了逗號隔開,所以必須fields terminated by',',否則匯入失敗
3)、因為Winsows中行以“\r\n”隔開,所以必須lines terminated by'\r\n',
如果不設定這個引數,也可匯入成功,但是會多匯入一個“\r”控制字元,可能在視覺化
MySQL工具中看不出欄位異樣,但是在MySQL命令列中顯示會明顯混亂。
4)、如果表tt非空,且檔案中的ind值在表中有重複,會提示錯誤,並匯入失敗。
只匯入name欄位,檔案d.txt的內容:
a
b
c
mysql> load data infile 'd.txt' into table tt
-> lines terminated by'\r\n'
-> (name);
load data 命令還支援更復雜的文字格式、檔案編碼等,可參考官方文件。
4.匯出到資料到windows文字檔案時,為了方便檢視,也需要相同的設定
mysql> select * from tt into outfile 'd.txt'
-> fields terminated by','
-> lines terminated by'\r\n'
二,JDBC連線匯入(mysql)
程式碼如下:
import java.sql.*;
public class TestPreStmt {
public static void main(String[] args) {
ResultSet rs = null;
Connection conn = null;
PreparedStatement pst = null;
try {
//第一步:載入MySQL的JDBC的驅動
Class.forName("com.mysql.jdbc.Driver");
//取得連線的 url,能訪問MySQL資料庫的使用者名稱,密碼;資料庫名
String url = "jdbc:mysql://localhost:3306/2";
String user = "root";
String password = "19870714";
//第二步:建立與MySQL資料庫的連線類的例項
conn = DriverManager.getConnection(url, user, password);
//第三步:用conn建立Statement物件類例項 stmt
String sql = "select id,name from student where id=? and name=?";
pst = conn.prepareStatement(sql);
pst.setInt(1, 1);
pst.setString(2, "張三");
rs = pst.executeQuery();
while(rs.next()){
System.out.println(rs.getString("id"));
System.out.println(rs.getString("name"));
}
String ps = "insert into student values(?,?,?)";
pst = conn.prepareStatement(ps);
pst.setInt(1, 5);
pst.setString(2, "pig");
pst.setString(3, "m");
pst.executeUpdate();
} catch (ClassNotFoundException e) {
//載入JDBC錯誤,所要用的驅動沒有找到
System.out.println("驅動載入錯誤");
}catch (SQLException ex) {
//顯示資料庫連線錯誤或查詢錯誤
System.err.println("SQLException:"+ex.getMessage());
}finally {
try{
if(pst != null) {
pst.close();
pst = null;
}
if(conn != null) {
conn.close();