μΌλΆ 32kb μ΄λ―Έμ§(ν μ€νΈ μ€μλ μ΄λ¬ν μ΄λ―Έμ§ νλλ§)λ₯Ό λλμΌλ‘ λ‘λν΄μΌ νλ μμ μ μννλ λμ λ€μ μ€λ₯ λ©μμ§κ° λνλ©λλ€.
RequestError: While reading current row from host, a premature end-of-message was
encountered--an incoming data stream was interrupted when the server expected to see
more data. The host program may have terminated. Ensure that you are using a supported
client application programming interface (API).
at Connection.<anonymous> (H:\Projects\csi-photo-import\node_modules\mssql\lib\tedious.js:478:17)
at Connection.emit (events.js:95:17)
at Parser.<anonymous> (H:\Projects\csi-photo-import\node_modules\mssql\node_modules\tedious\lib\connection.js:434:15
)
at Parser.emit (events.js:95:17)
at Parser.nextToken (H:\Projects\csi-photo-import\node_modules\mssql\node_modules\tedious\lib\token\token-stream-par
ser.js:91:18)
at Parser.addBuffer (H:\Projects\csi-photo-import\node_modules\mssql\node_modules\tedious\lib\token\token-stream-parser.js:68:17)
at Connection.sendDataToTokenStreamParser (H:\Projects\csi-photo-import\node_modules\mssql\node_modules\tedious\lib\
connection.js:869:35)
at Connection.STATE.SENT_CLIENT_REQUEST.events.data (H:\Projects\csi-photo-import\node_modules\mssql\node_modules\tedious\lib\connection.js:273:23)
at Connection.dispatchEvent (H:\Projects\csi-photo-import\node_modules\mssql\node_modules\tedious\lib\connection.js:732:59)
at MessageIO.<anonymous> (H:\Projects\csi-photo-import\node_modules\mssql\node_modules\tedious\lib\connection.js:660:22)
λ΄ μ½λλ λ€μκ³Ό κ°μ΅λλ€.
var req = new sql.Request(conn);
var table = new sql.Table('#mempictures');
table.create = true;
table.temporary = true;
table.columns.add('uid', sql.VarChar(50), {nullable:false});
table.columns.add('mempicture', sql.Image, {nullable:false});
//... then in a loop
table.rows.add(keys[i], memberPhotos[keys[i]].BinaryPhotoBuffer); //, memberPhotos[keys[i]].BinaryImage);
//... completed with
var deferred = new q.defer();
req.bulk(table, function(err, rowct) {
if (err)
deferred.reject(err);
deferred.resolve(statuses);
});
return deferred.promise;
λ΄κ° λκ°λ₯Ό λμΉκ³ μμ΅λκΉ? #197κ³Ό κ΄λ ¨μ΄ μλ κ² κ°μ΅λλ€.
λλ bcp μ νΈλ¦¬ν°κ° nvarchar(max)
(WireSharkλ₯Ό ν΅ν΄)λ₯Ό μΈμ½λ©νλ λ°©λ²κ³Ό Tediousκ° μννλ λ°©μμ λΉκ΅νμ¬ #197μ ν΄κ²°νμ΅λλ€. μ΄κ²μ μλ§λ μ΄ λ¬Έμ λ₯Ό λΆμνλ κ°μ₯ μ¬μ΄ λ°©λ²μ΄κΈ°λ ν©λλ€.
TDS μ¬μμ μ΄ν΄λ³΄λ©΄ image, text λ° ntextκ° λ€λ₯΄κ² μλνκ±°λ ν€λμ λ€λ₯Έ ν ν°μ΄ ν¬ν¨λλλ‘ νλ μΌνμ± λ©λͺ¨κ° λ§μ΄ μμ΅λλ€. Tediousκ° μ²λ¦¬νμ§ μλ κ·Ήλ¨μ μΈ κ²½μ°κ° μλ€λ κ²μ μ ν λλΌμ΄ μΌμ΄ μλλλ€. μ΄λ―Έμ§ μ νμ΄ 6λ μ΄μ λ μ΄μ μ¬μ©λμ§ μμΌλ©° κ°κΉμ΄ μ₯λμ SQL Serverμμ μ κ±°λ κ°λ₯μ±μ΄ μλ€λ κ²μ μ΄λ―Έ μκ³ μκΈ°λ₯Ό λ°λλλ€(λμ varbinaryλ₯Ό μ¬μ©ν΄μΌ ν¨).
μμ§ν λ§ν΄μ μ¬κΈ° μλ λͺ¨λ μ¬λλ€μ μ¬κ° μκ°μ μ΄ λΌμ΄λΈλ¬λ¦¬μμ μμ
νκ³ μ¬μ©λμ§ μλ μ νμ λ¬Έμ λ₯Ό μΆμ νλ κ²μ μ νλ μ¬κ° μκ°μ κ·Έλ€μ§ 보λ μκ² μ¬μ©νμ§ μλ κ² κ°μ΅λλ€. @patriksimek μ΄ κ΄μ¬μ κ°μ§ μλ μμ΅λλ€. λ μ΄μ μ¬μ©λμ§ μλ μ νμ λ¬Έμ κ° μλ κ²½μ°(μ nvarchar(max)
μμ λ°μν κ²½μ°), μ΄λ λ€λ₯Έ μ΄μΌκΈ°μ
λλ€. λν bcpμ Tediousκ° λ€λ₯΄κ² μννλ μμ
μ νμ
νκΈ° μν΄ μ΄κΈ° λ κ·Έ μμ
μ μννλ©΄ λ λ§μ μ§μμ μ 곡ν μλ μμ΅λλ€.
ν . μ΄λ―Έμ§ μ νμ΄ λ μ΄μ μ¬μ©λμ§ μλλ€λ μ¬μ€μ λͺ°λμ§λ§ λλΌμ§ μμμ΅λλ€. μ°λ¦¬ κ·Έλ£Ήμ κ·Έκ²μ μ¬μ©νλ μΊ νΌμ€μ λ€λ₯Έ κ³³μμ μ 3μ DBλ₯Ό μμλ°μμ΅λλ€.
μ΄μ¨λ μμ ν μ΄λΈμ λλ λ‘λν λ€μ κ±°κΈ°μμ μ‘°μΈ/μ λ°μ΄νΈλ₯Ό μννκΈ° λλ¬Έμ μμ ν μ΄λΈμμ VarBinaryλ₯Ό μ¬μ©νκ³ ν΄κ²° λ°©λ²μΌλ‘ λ³νμ μνν μ μλ€κ³ μκ°ν©λλ€.
μ΄ νλ‘μ νΈμ λν λͺ¨λ λ Έκ³ μ κ°μ¬λ립λλ€!
μ’μμ. varbinaryμ λ¬Έμ κ° μλ κ²½μ° νμ€ν κ²μνκ³ κ²ν νκ² μ΅λλ€.
νν€μΉ κ°μΉκ° μλ€κ³ μκ°ν©λλ€. λ¬Έμ λ₯Ό μ¬νν μ μμμ§λ§ μ μ΄λ° μΌμ΄ λ°μνλμ§ λͺ¨λ₯΄κ² μ΅λλ€. λ¬Έμμ λ©λͺ¨κ° μμ΅λλ€.
XMLTYPEμ BulkLoadBCPμ©μΌλ‘λ§ μ ν¨ν LONGLEN_TYPEμ λλ€.
μ΄λ―Έμ§λ LONGLEN_TYPEμ΄λ―λ‘ λλ μ½μ μμ IMAGEλ₯Ό μ§μνμ§ μλ κ²μ²λΌ λ€λ¦½λλ€. λ μ΄μν κ²μ λ¬Έμμ λ λ€λ₯Έ λ©λͺ¨μ λλ€.
INSERT BULK μμ μ κ²½μ° XMLTYPEμ NVARCHAR(N) λλ NVARCHAR(MAX) λ°μ΄ν° μ νμΌλ‘ μ μ‘λ©λλ€. XMLTYPEμ΄ μ§μ λλ©΄ μ€λ₯κ° μμ±λ©λλ€.
κ·Έλ λ€λ©΄ λλ μ½μ μμ XMLTYPEμ΄ μ ν¨νκ°μ? λμκ² λͺ ννμ§ μμ΅λλ€ ...
TDS λ¬Έμκ° μΌλ§λ λμ°νμ§ λ³΄μ¬μ£Όλ λ λ€λ₯Έ μμ λλ€. 첫 λ²μ§Έ μκ°μ λΉμ μ΄ ν κ²κ³Ό κ°μ κ²μ νμΈνκ³ μ΄λ―Έμ§κ° μ ν¨ν λλ μ½μ μ νμΈμ§ μ¬λΆμ νμμ λ€λ₯΄κ² μΈμ½λ©ν΄μΌνλμ§ μ¬λΆλ₯Ό μλ €μ£Όλ λ©λͺ¨κ° μλμ§ νμΈνλ κ²μ΄ μμ§λ§ κ²°λ‘ μ λ΄λ¦¬μ§ λͺ»νμ΅λλ€. νν€μΉ κ°μΉκ° μλ€λ λ° λμν©λλ€.
μ΄μ μ λͺ κ°μ§ μ€λ₯κ° λ°μνμ΅λλ€. 루νμ μ½μ λ νμ΄ μμ λλ λ°μν©λλ€. μΌλ°μ μΈ κ²½μ°λ μ΄μ μΆκ°ν λ€μ λ€λ₯Έ μμΉμμ μΌλΆ λ°°μ΄μ κ°μ Έμ€κ³ ν΄λΉ λ°°μ΄μ λ°λ³΅νμ¬ νμ μ½μ νλ κ²μ λλ€. λλλ‘ λ°°μ΄μ΄ λΉμ΄ μμ λ νμ΄ μ½μ λμ§ μκ³ μ΄ μ€λ₯κ° λ°μν©λλ€. λ°λΌμ λλ λ‘λλ₯Ό μ€ννκΈ° μ μ λ°°μ΄μ΄ λΉμ΄ μλμ§ νμΈνλ κ²μ΄ μ’μ΅λλ€.
κ°μ₯ μ μ©ν λκΈ
μ΄μ μ λͺ κ°μ§ μ€λ₯κ° λ°μνμ΅λλ€. 루νμ μ½μ λ νμ΄ μμ λλ λ°μν©λλ€. μΌλ°μ μΈ κ²½μ°λ μ΄μ μΆκ°ν λ€μ λ€λ₯Έ μμΉμμ μΌλΆ λ°°μ΄μ κ°μ Έμ€κ³ ν΄λΉ λ°°μ΄μ λ°λ³΅νμ¬ νμ μ½μ νλ κ²μ λλ€. λλλ‘ λ°°μ΄μ΄ λΉμ΄ μμ λ νμ΄ μ½μ λμ§ μκ³ μ΄ μ€λ₯κ° λ°μν©λλ€. λ°λΌμ λλ λ‘λλ₯Ό μ€ννκΈ° μ μ λ°°μ΄μ΄ λΉμ΄ μλμ§ νμΈνλ κ²μ΄ μ’μ΅λλ€.