Проверьте JLogTailer , который выполняет эту логику.
Основная часть кода:
public void run() {
try {
while (_running) {
Thread.sleep(_updateInterval);
long len = _file.length();
if (len < _filePointer) {
// Log must have been jibbled or deleted.
this.appendMessage("Log file was reset. Restarting logging from start of file.");
_filePointer = len;
}
else if (len > _filePointer) {
// File must have had something added to it!
RandomAccessFile raf = new RandomAccessFile(_file, "r");
raf.seek(_filePointer);
String line = null;
while ((line = raf.readLine()) != null) {
this.appendLine(line);
}
_filePointer = raf.getFilePointer();
raf.close();
}
}
}
catch (Exception e) {
this.appendMessage("Fatal error reading log file, log tailing has stopped.");
}
// dispose();
}
Вы должны попробовать
INSERT INTO ExistingTable (Columns,..)
SELECT Columns,...
FROM OtherTable
Взгляните на INSERT
@Ryan Chase Вы можете сделать это, выбрав все столбцы, используя *? Да!
INSERT INTO yourtable2
SELECT * FROM yourtable1
Нет, вы не можете использовать SELECT INTO
для вставки данных в существующую таблицу.
В документации это очень ясно сказано:
SELECT… INTO создает новую таблицу в файловой группе по умолчанию и вставляет в нее строки, полученные в результате запроса.
Обычно вы не хотите использовать SELECT INTO
в производственной среде, потому что это дает вам очень мало контроля над созданием таблицы и может привести к разного рода неприятным блокировкам и другим проблемам с производительностью. Вы должны создавать схемы явно и использовать INSERT
- даже для временных таблиц.
Обновление от CTE? http://www.sqlservercentral.com/Forums/Topic629743-338-1.aspx