{"id":657,"date":"2007-08-15T12:24:14","date_gmt":"2007-08-15T10:24:14","guid":{"rendered":"http:\/\/www.glorf.it\/blog\/2007\/08\/15\/sql-talk\/sql-server-inhalt-einer-datei-einlesen"},"modified":"2007-08-15T12:24:38","modified_gmt":"2007-08-15T10:24:38","slug":"sql-server-inhalt-einer-datei-einlesen","status":"publish","type":"post","link":"http:\/\/www.glorf.it\/blog\/2007\/08\/15\/sql-talk\/sql-server-inhalt-einer-datei-einlesen","title":{"rendered":"SQL-Server: Inhalt einer Datei einlesen"},"content":{"rendered":"<p>K&#252;rzlich fragte mich ein Kollege, wie man denn am SQL Server den Inhalt einer Datei in ein Feld einlesen kann. Zuf&#228;llig gibt es dazu am SQl-Server-2005 ein nettes neues Feature, dass man dazu missbrauchen &#228;h gebrauchen kann&#8230;<\/p>\n<p>Im folgenden Beispiel soll ein ASCII-File (nicht Unicode!) eingelesen werden, deswegen muss der Inhalt von Typ VARBINARY noch in den Typ VARCHAR konvertiert werden. Das gilt auch, wenn man das letztlich in ein Unicodefeld speichern will. <\/p>\n<p><code lang=\"sql\">CREATE TABLE #bla (<br \/>\n\tid\tinteger identity(1,1) NOT NULL primary key,<br \/>\n\tdateiinhalt varchar(max) not null)<\/p>\n<p>INSERT INTO #bla(dateiinhalt)<br \/>\n\tSELECT CAST(bin as varchar(max)) FROM<br \/>\n\t\tOPENROWSET(BULK N&#x0027;c:\\test\\ascii-file.txt&#x0027;, SINGLE_BLOB) AS a(bin)<\/p>\n<p>select * from #bla<\/code><\/p>\n<p>Risiken und Nebenwirkungen:<\/p>\n<ul>\n<li>Um das einsetzen zu d&#252;rfen muss man entweder Admin sein oder die Verwendung von Openrowset auch f&#252;r andere erlauben.<\/li>\n<li>Die Datei muss f&#252;r den SQL-Server erreichbar sein. Deswegen wird der Pfad aus der Sicht des SQL-Servers angegeben. Das bedeutet im einfachsten Fall, dass sie auf einer Festplatte des Servers liegt.<\/li>\n<li>Falls der Server-Dienst in einem Benutzerkontext l&#228;uft, der auch Netzrechte hat, dann darf die Datei auch auf einer Freigabe liegen auf die dieser Benutzer Zugriffsrechte hat.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>K&#252;rzlich fragte mich ein Kollege, wie man denn am SQL Server den Inhalt einer Datei in ein Feld einlesen kann. Zuf&#228;llig gibt es dazu am SQl-Server-2005 ein nettes neues Feature, dass man dazu missbrauchen &#228;h gebrauchen kann&#8230; Im folgenden Beispiel soll ein ASCII-File (nicht Unicode!) eingelesen werden, deswegen muss der Inhalt von Typ VARBINARY noch [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[3],"tags":[],"_links":{"self":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/posts\/657"}],"collection":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/comments?post=657"}],"version-history":[{"count":0,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/posts\/657\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/media?parent=657"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/categories?post=657"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/tags?post=657"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}