2015-12-24 25 views
5

Tôi có một tập tin chứaĐọc một tập tin văn bản với JQuery và lưu trữ trong DataBase

1 : "Benz" 
2 : "Bmw" 
3 : "Porche" 
4 : "Ferrari" 

Và tôi muốn đọc nó với Jquery và lưu trữ chúng trong cơ sở dữ liệu địa phương tại OpenDatabase, với 1 sẽ là một số bước và Benz sẽ là lĩnh vực khác trong cơ sở dữ liệu.

mã của tôi để đọc các tập tin

jQuery.get('file/words.txt', function(data) { 
    alert(data) 
}); 

và mã của tôi để tạo cơ sở dữ liệu

var db = openDatabase(’mydb’, ’1.0’, 
        ’database for test’, 
        2 * 1024 * 1024 
       ); 
db.transaction(function (tx) { 
tx.executeSql(’CREATE TABLE IF NOT EXISTS Car 
       (number INT, name VARCHAR(100))’); 

}); 

Tôi không biết làm thế nào tôi có thể tách dữ liệu và đặt chúng trong cơ sở dữ liệu với javascript.

Cảm ơn.

+0

Điều này thực sự ở ngoài đó, nhưng bạn có thể thử nhận tệp và sử dụng '.split()' của javascript để biến nó thành một mảng? – Stardust

+0

Tôi nghĩ rằng tôi nên sử dụng phù hợp, nhưng tôi không biết làm thế nào – joseva

Trả lời

1

Dưới đây là đoạn code làm cho bạn những gì bạn muốn:

// assume this is your data (I've added the newline as well) 
var textData = '1 : "Benz" \n2 : "Bmw" \n3 : "Porche"\n4 : "Ferrari" '; 

// turn data into array 
var ary = textData.split('\n').map(function(v) { 
    return v.split(':').map(function(v2) { 
     // make sure we remove the quotes and spaces 
     return v2.replace(/"/g, '').trim(); 
    }); 
}) 

// function to escape double quotes to prevent sql injection 
function escapeSql(str) { 
    return (typeof str === 'number' ? str : str.replace(/"/g, '"')); 
} 

// open database 
var db = openDatabase('mydb', '1.0', 'database for test', 2 * 1024 * 1024); 

// create table 
db.transaction(function(tx) { 
    tx.executeSql('create table if not exists Car(step, make)'); 
}); 

// insert data 
db.transaction(function(tx) { 
    // loop through each item and insert the data, notice how we call escapeSql to prevent sql injection 
    ary.forEach(function(item) { 
     var sql = 'insert into Car(step, make) values(' + escapeSql(item[0]) + ', "' + escapeSql(item[1]) + '")'; 
     tx.executeSql(sql); 
    }); 
}); 

var sql, 
    cars = []; 

// read data from table 
db.transaction(function(tx) { 
    tx.executeSql('select * from Car', [], function(tx, results) { 
     var len = results.rows.length; 
     for (var i = 0; i < len; i++) { 
      cars.push({ 
       step: results.rows.item(i).step, 
       make: results.rows.item(i).make 
      }); 
     } 

     console.log(cars); 
    }, null); 
}); 

Output:

enter image description here

+0

Cảm ơn mã của bạn và đặc biệt cho các ý kiến. nó hoạt động. – joseva

1

Loại bỏ các số và dấu ngoặc kép trong tệp văn bản của bạn nếu bạn có thể, chúng không cần thiết (bộ đếm của bạn sẽ thực hiện việc này cho bạn).

Thay đổi mã của bạn để đọc file văn bản như sau:

var file = "file/words.txt"; 
    function getFile(){ 
     $.get(file, function(txt){ 
      var lines = txt.responseText.split("\n"); 
      for (var i = 0, len = lines.length; i < len; i++) { 
       save(lines[i]); 
      } 
     }); 
    } 

Bây giờ bạn có một mảng với mỗi dòng của tập tin của bạn; nếu bạn loại bỏ các con số và dấu ngoặc kép, nó chỉ nên là tên xe.

for (var i = 0; i < lines.length; i++) { 
    tx.executeSql('INSERT INTO Car (id, name) VALUES (i, lines[i]); 
} 

Nếu bạn muốn giữ lại các tập tin như là, có sự thay đổi dưới đây như:

var lines = txt.responseText.split(":"); 

Bây giờ mảng chứa số và tên xe (lẻ là số, thậm chí là tên xe). Chúng tôi có thể muốn thoát khỏi dấu ngoặc kép (SQL có thể ném lỗi trên những):

lines.replace(/"/g, '').trim(); 

for (var i = 0; i < lines.length; i++) { 
     tx.executeSql('INSERT INTO Car (id, name) VALUES (i, lines[i+1])'); 
     i++; // we iterate again because we want an odd number 
      // (we skip over one iteration as that'd be the car, and we want the next # instead). 
    } 
+0

tiếc là tôi cần những con số và báo giá. trong thực tế các tập tin là có và tôi nên sử dụng nó. các con số có nghĩa là kết quả của bước 1 sẽ là Benz và kết quả của bước 2 sẽ là Bmw – joseva

+0

@joseva Tốt thôi, việc sửa đổi mã là tương đối đơn giản. Chỉ cần thay đổi .split ("\ n") thành .split (":") vì đó là dấu tách b/w số và tên ô tô. Tôi sẽ cập nhật câu trả lời của mình với nhiều chi tiết hơn. – Boris

Các vấn đề liên quan