Как получить размер текстового файла на локальном диске с помощью SQL
Я хотел бы знать, как получить размер текстового файла, присутствующего на моем диске в SQL.
Что я уже пробовал:
Я попробовал openrowset, и мой запрос выглядит так (select datalength(bulkcolumn) from openrowset(bulk 'C:\a.txt', single_clob) a)
Но когда я предоставляю переменную вместо статического пути, запрос не компилируется.
Afzaal Ahmad Zeeshan
Зачем вам использовать SQL для этой цели, когда вы можете легко получить размер в программе C#?
ZurdoDev
Потому что иногда вам нужен результат в SQL.
Afzaal Ahmad Zeeshan
В таких иногда в таких случаях лучше делать то, о чем вы хотя бы знаете основы. Если вы ничего не знаете о той области, в которой пробуете эти вещи, результаты всегда сбивают с толку. Как, например, в этом случае. В таких случаях моя рекомендация-изучать основы, а не делать продвинутые вещи. Просто мнение.
ZurdoDev
Простой пример. Из хранимой процедуры sql выполняется другая хранимая процедура, которая выводит файл в систему. Вы проверяете размер файла, чтобы убедиться, что он экспортирован правильно, а если нет, то возвращаете что-то из sql вызывающему объекту.
Есть очень реальные и очень хорошие варианты использования для того, чтобы увидеть файлы из Sql.
Afzaal Ahmad Zeeshan
Не, File.WriteAllText(data);
(в C#) работа?
Я имею в виду, что есть много способов проверить, как передаются данные. Вы можете получить данные из считывателей и записать их в файловые потоки оттуда же. Конечно, хранимые процедуры могут быть быстрыми, из-за небольшого кэширования и других вещей, иногда память также является проблемой. :-)
Может быть, я немного больше поклонник KISS, но, тем не менее, я не могу понять эту идею. Прости, Райан.
ZurdoDev
По какой-то причине вы думаете, что здесь замешан C#. Dba, скорее всего, ничего не знает о C# и никогда не нуждается в этом.
Afzaal Ahmad Zeeshan
Именно поэтому я не могу понять эту идею и поэтому, скорее всего, не ответил на этот вопрос. проблема.
ZurdoDev
У некоторых людей вся работа сводится только к написанию sql. Они никогда не используют C#, и sql, который они генерируют, не используется sql, все это хранится в самом SQL.
Afzaal Ahmad Zeeshan
Мои теплые пожелания им. :-)
Овации.
Sergey Alexandrovich Kryukov
:-)
Member 12573208
Я должен использовать sql. Таково требование. У меня уже есть c# exe, который проверяет размер файла
ZurdoDev
1. ответьте на комментарий так, чтобы пользователь был уведомлен.
2. у вас есть код, который работает, поэтому все, что вам нужно сделать, это отладить его и выяснить, почему ваша переменная вызывает синтаксическую ошибку. Все должно быть довольно просто.
Sergey Alexandrovich Kryukov
Это не имеет ничего общего с SQL. SQL "ничего не знает" ни о каких дисках или файловых системах. Конечно, вы можете хранить информацию о файлах в своем SQL точно так же, как и любую другую информацию.
—СА
ZurdoDev
Код ОП действительно работает.
Sergey Alexandrovich Kryukov
Какой код?..
—СА
ZurdoDev
выберите datalength (bulkcolumn) из openrowset (bulk 'C:\a.txt', single_clob) a
Это вернет байты a.txt.
Sergey Alexandrovich Kryukov
А ... Спасибо за записку. Я этого не понимал...
—СА
jgakenhe
Вы можете использовать СУБД, такие как Oracle и SQL Server. Вы должны быть в состоянии погуглить его. Я придумал это без всяких усилий: http://stackoverflow.com/questions/2349552/using-t-sql-to-query-a-file-system-folder
CHill60
Стоит опубликовать в качестве решения, чтобы вытащить это из списка без ответа :-)
Daniel Jones
проверьте следующую ссылку: http://stackoverflow.com/questions/7952406/get-each-file-size-inside-a-folder-using-sql